vbs でPDF化するも上手く出来ない
vbsでテキストをPDF化させる時Wordのバージョン違いについて
これまでvbsを利用してテキストをPDF化していましたがWordのバージョンアップに伴い文面が崩れてしまう不具合が起きています。
なにか解決策はないでしょうか?
vbs
Option Explicite
Const wdExport Format PDF = 17
Const wdExportOptimizeForPrint = 0
Const wdExportOptimizeForOnScreen = 1
Const wdExportAl IDocument = 0
Const wdExport Document Content = 0
Const wdExport CreateNoBookmarks = 0
Const wdDoNot SaveCheanges = 0
Const wdHeaderFooterPrimary = 1
Const wdAlignPageNumberCenter = 1
Const wdFieldPage = 33
Const wdFieldNumPages = 26
Const wdFieldSectionPages = 66
Const wdAlignParagraphCenter = 1
Const wdLineSpaceSingle = 0
Const wdLineSpaceAt Least = 3
‘ファイルオープン時に使用するエンコード設定
Const msoEncodingJapaneseShiftJIS = 932
Const msoEncodingEUCJapanese = 51932
Const msoEncoding ISO2022 JPJISX02011989 = 50222
Const msoEncoding IS02022 JPJISX02021984 = 50221
Const msoEncoding IS02022 JPNoHalfwidthKatakana = 50220
Const msoEncodingUTF8 = 65001
Const wdGoToPage = 1
Const wdGoToAbsolute = 1
Const wdSectionBreakContinuous = 3
Const wdPageNumberStyleArabic = 0
Const wdNumber Of Pages InDocument = 4
Const wdEndOf Range RowNumber = 14
Const wdMaximumNumberOf Rows = 15
Const wdPrint View = 3
‘本スクリブトのエラーコード
Const ERROR_CD_OK = 0
Const ERROR_CD_INVALID_ARG = 8
Const ERROR_CD_FILE_NOT_EXSIT = 9
Const ERROR_CD_CREATE_WORD_OBJ_ERROR = 10
Const ERROR_CD_FILE_OPEN = 11
Const ERROR_CD_PDF_CONVERT = 12
Const ERROR_CD_FILE_DELETE = 13
Function PDFConvert Main()
‘変数宣言
Dim oApp
Dim oDoc
Dim oRange Dim oFso
Dim oPs
Dim oSelection
Dim oPageNumbers
Dim filePath
Dim fp
Dim args
Dim fileSize
Dim delFlag
Dim pageNum
Set args = WScript.Arguments
If ares Count < 1 Thene
WScript.Echo "[" & Now() & "]" & “引数エラー”
PDFConvert Main = ERROR_CD_INVALID_ARG←
Exit Function
End If
filePath = args (0)
WScript.Echo "[ & Now() & "]" & “(入力パラメータ)処理ファイル = [“ & filePath & “]”
delFlag = 0
If args.Count >= 2 Then
If StrComp(args (1), "DELETE", 1) = 0 Then
delFlag = 1
End If
End If
WScript.Echo "[" & Now(入力パラメータ)削除モード & "]" & deFlag
* ファイル存在チェック
Set oFso = CreateObject("Scripting.FileSystemObject")
If oFso.FileExists(filePath) = False Then
WScript.Echo "[" & Now() & "]" & “ファイル無しエラー”
Set oFso = Nothing
PDFConvert Main = ERROR_CD_FILE_NOT_EXSIT
Exit Functione
End If
fileSize oFso.GetFile(filePath).Size
WScript.Echo "[" & Now() & "]" & “入力ファイルサイズ = " & fileSize & “Byte”
fp = oFso.GetParent FolderName(filePath) & Chr(92) & oFso. Get BaseName (filePath) & “.pdf”
‘WORDオブジェクト生成
On Error Resume Next
set oApp = CreateObject("WordApplication")
If Err.Number <> 0 Then
WScript.Echo "[" & Now() & "]" & "Word. Applicationオブジェクト作成に失敗 : “& Err.Description
Set oFso = Nothing
PDFConvertMain = ERROR_CD_CREATE_WORD_OBJ_ERROR
Exit Functione
End If
On Error Goto 0
WScript.Echo "[" & Now() & "]" & "Word. Version = “ & oApp.Version
oApp.Visible = False
‘ファイルオープン
On Error Resume Next
Set oDoc App. Documents.Open(filePath, False, True, False,, ,, msoEncodingJapaneseShiftJIS,,,, False)
If Err.Number <> 0 Then
WScript.Echo "I" & Now() & "]" & “ファイルオープンに失敗 :(“ & Err.Number & ")(" & Err. Description & ")""
oApp.Quit
Set oApp = Nothing
Set oFso = Nothing
PDF Convert Main = ERROR_CD_FILE_OPEN
Exit Function
End If
On Error Goto 0
' ページセットアップ
Set oPs = oDoc.PageSetup
oPs. TopMargin oApp. MillimetersToPoints (20)
oPs.RightMargin oApp.MillimetersToPoints(20)
oPs.LeftMargin oApp.MillinetersToPoints(20)
oPs. BottonMargin oApp.MillimetersToPoints(20)
oPs.LinesPage 50
oPs. CharsLine = 50"
Set oPs Nothing"
‘文書全体の設定
Set oRange = oDoc. Range
oRange. Font.Name = "MS ゴシック“
oRange.Font.Size = 20
Set oRange Nothing
‘セクション追加
oDoc. Activate
oDocActiveWindow. View = wdPrint View
Set oSelection = oApp. Selection
oSelectionGoTo wdGoToPage, wdGoToAbsolute, 2
oSelectionInsert Break wdSectionBreakContinuous
Set oSelection = Nothing
‘フッターの設定 (ページ番号)
Set oPageNumbers = oDoc. Sections (1).Footers (wdHeaderFooterPrimary)PageNumbers
oPageNumbers. ShowFirstPageNumber = False"
oPageNumbers. Add wdAlignPageNumberCenter
Set oPageNumbers = Nothing
‘フッターの設定 (ページ番号)
Set oPageNumbers oDoc.Sections(2).Footers(wdHeaderFooterPrinary).PageNumbers
oPageNumbersNumberStyle wdPageNumberStyleArabice
oPageNumbersRestart NumberingAt Section = True
oPageNumbers. StartingNumber = 1
oPageNumbers. Add wdAlierPageNunberCenter
Set oPageNumbers = Nothing
‘フッターの設定 (フォントと書式)
Set oRange Doc. Sections (2).Footers (ndHeaderFooterPrinary).Range
oRange. Font.Name = "MS ゴシック”
oRange.Font.Size = 9
oRange. Text "P/T"
‘ページ番号
Range.Fields. Add cRangeWords (1), wdFieldPage. False
‘総ページ番号
oRange.FieldsAdd oRange. Mords(3), wdFieldNunPages, False
‘セクションページ番号
oRange.Fields. Add oRange. Words (3)wdFieldSectionPages,, False
‘中央揃い
oRange.Paragraphs. Alignment wdAlignParagraphCenter
Set oRange Nothing
‘PDF 变换
WScript.Echo "[" & Now() & "]" & “PDFコンバート開始”
On Error Resume Next
oDoc.Export AsFixedFormat fp, wdExport Format PDF, False, wdExport OptimizeForOnScreenwdExportAI IDocument...wdExport Document Content. False,False, wdExportCreateNoBoolmarks.False,False,False
If Err.Number <> 0 Then
WScript.Echo "[" & Now() & "]" & "PDF失敗: (" & Err.Number & ")(" & Err.Description & ")""
Doc. Close wdDoNot SaveCheanges
oApp.Quit
Set oDoc = Nothing
Set oApp = Nothing
Set oFso = Nothing
PDFConvertMain = ERROR CD PDF CONVERT
Exit Function
End If
On Error Goto 0
WScript.Echo "I" & Now() & "]" & "PDFコンバート終了”
‘出力ファイル情報
pageNum = oDoc. Range. Information (wdNumberOfPages InDocument)
fileSize oFso.GetFile(fp).Size
WScript.Echo "[" & Now() & "]" & “出力PDF情報 (総ページ番号= " & pageNum & “, 出力ファイルサイズ=“ & fileSize & " Byte)"
‘クローズ処理
oDoc. Close wdDoNot SaveCheanges
MScript.Echo "I & Now() & "]" & “ファイルクローズ = [" & filePath & “]”
oApp.Quit
Set oDoc = Nothing
Set oApp = Nothing
' ファイル削除
If delFlag= 1 Thene
On Error Resume Next
oFso.DeleteFile filePathe
If Err.Number <> 0 Then
WScript.Echo "[" & Now() & "]" & “ファイル削除失敗 : (" & Err.Number & ")(" & Err. Description & ")"
Set oFso Nothing
PDFConvert Main = ERROR_CD_FILE_DELETE
Exit Function
End If
On Error Goto 0
WScript.Echo "[" & Now() & "]" & “ファイル削除= [" & filePath & "]"-
End If
Set oFso Nothing
‘正常終了
PDFConvert Main ERROR_CD_OK
Exit Function
End Function
‘メイン処理実行
Dim ret
WScript.Echo "[" & Now() & "]" & "@@@@PDFVBS 変換開始@@@@“
ret =PDFConvert Main
WScript.Echo "[" & Now() & "]" & "@@@@PDFVBS 変換終了@@@@ (" & ret & ")"
WScript.Quit(ret)
自分で試したこと
文字コードを変更してみたりしましたが全くなにも変化がなかったです。
詳しい方お願い致します。
0