小さなクラスを作る(6)~WordドキュメントをPDFに変換する
WordドキュメントをPDFに変換して保存する
仕様
- Wordドキュメント
- そのWordドキュメントがあるフォルダパス
- ファイル名
以上3つをフィールドとして持つ。
メソッドは今のところ一つだけ。
- WordドキュメントをPDFにして指定のフォルダに保存する
- 元のWordドキュメントのあるフォルダにある保存用のフォルダに保存する
- 元のWordドキュメントのファイル名に任意の文字列を追加することができる
とまあ、こんな感じにした。
クラスモジュールのコード
オブジェクト名は「DocPDFConverter」とした。
フィールド部分
Option Explicit 'フィールド Private objDoc_ As Word.Document Private objPath_ As String Private objFileName_ As String
アクセサ部分
'アクセサ Public Property Get objDoc() As Word.Document Set objDoc = objDoc_ End Property Public Property Get objPath() As String objPath = objPath_ End Property Public Property Get objFileName() As String objFileName = objFileName_ End Property
メソッド部分
'メソッド Public Sub convertDocToPDF(ByRef doc As Word.Document, _ ByVal tgtFolderName As String, _ Optional ByVal addStr As String = "") '……(1)' Set objDoc_ = doc objPath_ = doc.path objFileName_ = doc.Name Dim nameStr As String '……(2)' nameStr = Left(objDoc_.Name, InStrRev(objDoc_.Name, ".") - 1) '……(3)' objDoc_.ExportAsFixedFormat _ OutPutFileName:=objPath_ & "\" & tgtFolderName & "\" & addStr & nameStr & ".pdf", _ ExportFormat:=wdExportFormatPDF '……(4)' DoEvents End Sub
コードの説明
- (1)にあるように、引数は3つ。第1引数はWordドキュメントそのもの。第2引数は保存用のフォルダ名。第3引数は保存時にファイル名の先頭に加える文字列。Optionalなので省略可。
- (2)は、拡張子を除いたファイル名を入れるための変数。
- (3)で、拡張子を除いたファイル名を割り出す。
- (4)では、WordドキュメントオブジェクトのExportAsFixedFormatメソッドでPDFに変換・保存している。引数OutPutFileNameとExportFormatを指定して実行している。それぞれの引数が何を意味しているかは、コードを見たら分かると思う。
おわりに
なんだか、あんまりクラスにした意味が感じられないなあ。もっと柔軟な処理ができるようにした方がいいのかも。
まあ、でもこれで、写しPDF作成マクロに必要なものは出そろったので、ここらで写しPDF作成マクロシリーズに戻ることにしよう。