単純な一覧データを出力した PDF の見本
2017/12/25 更新
Excel.Application を取得しているので、GetOpenFilename でファイルを選択できるようにしました。細かい詳細はソースコードにコメントに書き込んでいます
※ PDF は、Excel と同じ名前で拡張子を .pdf にしてスクリプトと同じフォルダに保存されます。
Excel 2007以降の Excelで名前を付けて保存で PDF に保存できますが、これはスクリプトで行うコードです。Excel 2007 を調べているとメソッド紹介されていたので、引数見た限り、 VBScriptでも動くだろうと試してみました。
( プリンタが使える状態でないと動作しません )
ExportAsFixedFormat メソッド
XlFixedFormatType
最近は、VBScript の単純コードである .vbs は Google Chrome での扱いが悪いので、.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
VBScriptドキュメント
|
【VBS + オブジェクトの最新記事】
- 簡易詳細設計書(A4)作成 : VBScript + Excel.Application
- VBScript : 複数テキストファイルの charset(キャラクタセット) 一括変換 / ADODB.Stream
- テーブル設計書作成 : VBScript + Excel.Application + SQLServer
- VBScript : Excel.Application でファイルを複数選択する
- ブラウザ上にあるデータを PHP で受け取って、VBScript のコードを作成して事前に作成済のテンプレート Excel にデータをロードして印刷で使用する
- VBScript : Access のテーブルを TransferText メソッドを使用して UTF-8 で CSV または HTML にして出力する
- VBScript : ネイティブ(CAPICOM.Utilities) Base64 エンコード
- VBScript で、スクリプト(Windows Script Component)をオブジェクトとして直接使う方法
- VBScript : バイナリファイルの更新( 1バイトの ByteArray なら、ADO.Stream で作成できます )
- VBScript : ini ファイルの値を取得する
- VBS : My Documents フォルダのような、特殊フォルダのサイズを取得する
- VBScript : ネイティブ SHA1、MD5、SHA256 変換
【VBScript関連のカテゴリ】