VBScript : 既存の Excel を PDF に変換する ( ExportAsFixedFormat )



単純な一覧データを出力した PDF の見本




Excelで名前を付けて保存で PDF に保存できますが、これはスクリプトで行うコードです。
( プリンタが使える状態でないと動作しません )

ExportAsFixedFormat メソッド

XlFixedFormatType

.wsf で作成しています。もともと、.wsf のほうが簡単に外部ライブラリを参照したり、オブジェクトを最初から定義できるのでコードが簡潔になります。ここでは、Excel.Application 内で定義されている定数も参照して使えるようにしています。

Excel 側では、印刷設定により一行目のタイトルを常に表示するようにしたり、A4 横にして縮小したりしています。シートは二つありますが、PDF に変換すると全て出力されます。


01.<JOB>
02.<OBJECT id="Fso" progid="Scripting.FileSystemObject" />
03.<OBJECT id="ExcelApp" progid="Excel.Application" />
04.<REFERENCE guid="00020813-0000-0000-C000-000000000046" />
05.<SCRIPT language="VBScript">
06.' Wscript.Echo xlTypePDF,xlTypeXPS
07. 
08.' **************************************
09.' スクリプトのあるディレクトリの取得
10.' **************************************
11.strCurPath = WScript.ScriptFullName
12.Set obj = Fso.GetFile( strCurPath )
13.Set obj = obj.ParentFolder
14.strCurPath = obj.Path
15. 
16.' 途中で異常終了すると、Excel がプロセスに残ってしまうので表示させています。
17.' マウス等で Excel 本体を操作しないで下さい。
18.' Excel を表示させたくない場合は、以下を削除または行頭に ' でコメントにして下さい
19.ExcelApp.Visible = True
20. 
21.Dim MyBook
22.Dim FilePath
23. 
24.' ここで Excel を参照するダイアログが開きます
25.FilePath = ExcelApp.GetOpenFilename("Excel ファイル (*.xlsx;*.xls), *.xlsx;*.xls", 1, "Excel ファイルの選択")
26.if FilePath = "False" Then
27.        MsgBox "Excel ファイルの選択がキャンセルされました"
28.        ' スクリプト終了
29.        Wscript.Quit()
30.End If
31. 
32.' ここで Excel に読み込んでいます
33.on error resume next
34.' Workbook を取得( スクリプトと同じディレクトリ )
35.Set MyBook = ExcelApp.Workbooks.Open( FilePath )
36.if Err.Number <> 0 then
37.        ' 終了( 開放 )
38.        ExcelApp.Quit()
39.        Wscript.Echo Err.Description & vbCrLf & FilePath
40.        ' スクリプト終了
41.        Wscript.Quit()
42.end if
43.on error goto 0
44. 
45.Dim aPath
46.Dim strFileName
47.Dim aExt
48. 
49.' Excel の名前部分を取り出して、pdf の名前部分にします
50.aPath = Split(FilePath, "\")
51.strFileName = aPath(Ubound(aPath))
52.aExt = Split(strFileName,".")
53.strFileName = aExt(0)
54. 
55.' スクリプトと同じフォルダに保存されます
56.Call MyBook.ExportAsFixedFormat( xlTypePDF, strCurPath & "\" & strFileName & ".pdf" )
57. 
58.' 終了( 開放 )
59.ExcelApp.Quit()
60. 
61.' 終了確認
62.Wscript.Echo "処理が終了しました"
63. 
64.</SCRIPT>
65.</JOB>

Microsoft の記事

Application.GetOpenFilename メソッド

Microsoft の英文の記事

Saving Workbooks to PDF and XPS Formats in Excel 2007