単純な一覧データを出力した PDF の見本 Excelで名前を付けて保存で PDF に保存できますが、これはスクリプトで行うコードです。 ( プリンタが使える状態でないと動作しません ) ExportAsFixedFormat メソッド XlFixedFormatType .wsf で作成しています。もともと、.wsf のほうが簡単に外部ライブラリを参照したり、オブジェクトを最初から定義できるのでコードが簡潔になります。ここでは、Excel.Application 内で定義されている定数も参照して使えるようにしています。 Excel 側では、印刷設定により一行目のタイトルを常に表示するようにしたり、A4 横にして縮小したりしています。シートは二つありますが、PDF に変換すると全て出力されます。
<JOB> <OBJECT id="Fso" progid="Scripting.FileSystemObject" /> <OBJECT id="ExcelApp" progid="Excel.Application" /> <REFERENCE guid="00020813-0000-0000-C000-000000000046" /> <SCRIPT language="VBScript"> ' Wscript.Echo xlTypePDF,xlTypeXPS ' ************************************** ' スクリプトのあるディレクトリの取得 ' ************************************** strCurPath = WScript.ScriptFullName Set obj = Fso.GetFile( strCurPath ) Set obj = obj.ParentFolder strCurPath = obj.Path ' 途中で異常終了すると、Excel がプロセスに残ってしまうので表示させています。 ' マウス等で Excel 本体を操作しないで下さい。 ' Excel を表示させたくない場合は、以下を削除または行頭に ' でコメントにして下さい ExcelApp.Visible = True Dim MyBook Dim FilePath ' ここで Excel を参照するダイアログが開きます FilePath = ExcelApp.GetOpenFilename("Excel ファイル (*.xlsx;*.xls), *.xlsx;*.xls", 1, "Excel ファイルの選択") if FilePath = "False" Then MsgBox "Excel ファイルの選択がキャンセルされました" ' スクリプト終了 Wscript.Quit() End If ' ここで Excel に読み込んでいます on error resume next ' Workbook を取得( スクリプトと同じディレクトリ ) Set MyBook = ExcelApp.Workbooks.Open( FilePath ) if Err.Number <> 0 then ' 終了( 開放 ) ExcelApp.Quit() Wscript.Echo Err.Description & vbCrLf & FilePath ' スクリプト終了 Wscript.Quit() end if on error goto 0 Dim aPath Dim strFileName Dim aExt ' Excel の名前部分を取り出して、pdf の名前部分にします aPath = Split(FilePath, "\") strFileName = aPath(Ubound(aPath)) aExt = Split(strFileName,".") strFileName = aExt(0) ' スクリプトと同じフォルダに保存されます Call MyBook.ExportAsFixedFormat( xlTypePDF, strCurPath & "\" & strFileName & ".pdf" ) ' 終了( 開放 ) ExcelApp.Quit() ' 終了確認 Wscript.Echo "処理が終了しました" </SCRIPT> </JOB>
Microsoft の記事 Application.GetOpenFilename メソッド Microsoft の英文の記事 Saving Workbooks to PDF and XPS Formats in Excel 2007