パソコン悪戦苦闘記録

フォルダ内のすべてのWord文書をPDF変換するVBAマクロ

 最近は、通勤列車内で、Linuxコマンドや、シェルスクリプト関係を覚えようとしています。

 その一方で、VBA(WordマクロやExcelマクロ)から、遠ざかっています。
 そのため、VBA関係の知識を忘れつつあります。

 私のぼんくら頭脳は、もともとメモリ容量が不足気味です。高スペックとまではいきません。
 その上に、最近は、経年劣化が顕著になりました。頭の中のストレージが小容量の上に、経年劣化まで重なったために、いったん保存したはずのデータが知らぬ間に吹っ飛んでしまっています。
 ほとほと、困っています。




 そういう状況なので、昨夜(2023年10月28日)、あるVBAマクロを作るのに苦労しました。
 フォルダ内のすべてのWord文書を、PDFへと変換する、VBAマクロです。コードを書こうとするのですが、書き方をなかなか思い出せず、苦労しました。
 
 Linuxコマンドを一つ覚えたら、
  それと引き換えに、
 VBAの知識を一つ忘れる、
私の劣化した頭は、そのような状況のようです。

 
 1個のWord文書をPDFに変換するコードは、「マクロ記録」の機能で取得できました。
 「マクロ記録」とは、手作業で行った操作手順を、自動的にVBAコードに記録してくれる便利な機能です。

 マクロ記録で取得できたコードは、次のとおりです。
ActiveDocument.ExportAsFixedFormat _
OutputFileName:="D:¥Word文書.pdf", _
ExportFormat:=wdExportFormatPDF

 このコードを、繰り返し処理構文の中に組み込めばOKです。
 特定のフォルダ内にあるすべてのWord文書の数だけ、上記の処理を繰り返すわけです。

 処理をどのような方法で繰り返すか、いろんな方法があり得ます。
 今回は、Dir関数を使用しました。
 というか・・・、Dir関数しか思いつけなかった、ただそれだけのことです。

 Dir関数は、引数に指定したファイルが存在するときファイル名を返し、存在しないときは空文字を返す関数です。
 例えば、次のように書きます。
 変数 = Dir("D:¥test.docx")
"D:¥test.docx"が存在する場合は、変数に文字列"test.docx"が、
存在しない場合は、変数に長さ0の文字列""が入ります。

 Dir関数を使って記述したVBAコードの、ひとまずの完成形は、次のとおりです。

Dim myHoge As Document
Dim myFname As String, pdfname As String

myFname = Dir("C:¥Users¥goosyun¥Documents¥gooblog¥*.docx")
Application.ScreenUpdating = False

Do While myFname <> ""
 pdfname = Left(myFname, Len(myFname) - 5)
 Set myHoge = Documents.Open(FileName:="C:¥Users¥goosyun¥Documents¥gooblog¥" & myFname)

 myHoge.ExportAsFixedFormat OutputFileName:= _
"D:¥" & pdfname & ".pdf", _
ExportFormat:=wdExportFormatPDF
 myHoge.Close
 myFname = Dir()
Loop
Application.ScreenUpdating = True


 実行してみたら、すべてのWord文書をPDAに変換できていました。
 コードの出来、不出来は別にして、これでやりたいことが実現できたので、結果オーライです。
 
 う~ん、
 それにしても、Linuxコマンドの知識も習得しながら、VBA関係の知識も忘れずに保持しておくことって、
この経年劣化した低スペック頭脳には、無理なんでしょうかぁ?




それでは、また次の記事で
goosyun
名前:
コメント:

※文字化け等の原因になりますので顔文字の投稿はお控えください。

コメント利用規約に同意の上コメント投稿を行ってください。

 

  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最近の「VBAプログラミング・マクロ」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事