その一方で、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 ■■■■
最近の「VBAプログラミング・マクロ」カテゴリーもっと見る
最近の記事
カテゴリー
バックナンバー
人気記事