読者です 読者をやめる 読者になる 読者になる

小さなクラスを作る(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作成マクロシリーズに戻ることにしよう。

@akashi_keirin on Twitter