Word→PDFの繰り返しを自動化して楽にする
以前にWordをPDFにするExcelVBAのコードをご紹介しましたが、その時のコードはWordファイルの全ページをPDFにするものでした。
今回は同僚から「300ページくらいあるWordの一つのファイルを3-4ページ位ごとに分割してPDFにするのに何か楽にする方法がないか」と相談があり、負担を軽くするためのコードをk考えてみました。
Wordファイルを分割してPDFにする手順
今回のツールもExcelVBAを使用して作成することにしました。
まず対象となるWordファイルを開いて、指定したページごとに区切ってPDF化していくのを繰り返すフローを想定しています。
全ページをPDF化してそこからPDFファイルを分割する方法も考えましたが、PDFを分割するソフトが必要なのと、VBAでの完全自動化が難しそうだったのでやめました。
(他のプログラムだと簡単にできるのかもしれませんが。)
スポンサーリンク
作成したExcelワークシート
今回作成したツールを使用するために必要な情報は下記のようにワークシートに記載するようにしています。
①対象フォルダ名・対象ファイル名を取得し、②変更後のPDFファイル名を記入、③印刷の開始位置、終了位置を必要な行だけ記入して、④PDF出力すると元ファイルと同じフォルダに作成したPDFファイルが格納されるフローとなります。
作成したExcelVBAコード
1.対象ファイルの取得(①)
対象ファイルをパス含めて手入力しても良いのですが、手間なのでファイルを選択すると自動で記入されるようにしてみました。
下記のコードを実行すると、選択したファイルについて、A2セルにフォルダ名・A4セルにファイル名が入ります。
Dim FolderName As String
Dim FileName As String ’文字列を入れる変数として「FileName」を使う
FileName = Application.GetOpenFilename ’ダイアログを用いて選択したファイルのフルパスを取得
FolderName = Left(FileName, InStrRev(FileName, “”) - 1) ’フォルダ名とファイル名に分離
FileName = Mid(FileName, InStrRev(FileName, “”) + 1)
ThisWorkbook.ActiveSheet.Cells(2, 1) = FolderName ’セルに記入
ThisWorkbook.ActiveSheet.Cells(4, 1) = FileName
End Sub
2.連続PDF化の実行(④)
連続PDF化のコードは下記の通りです。
実行前に②出力するファイル名を指定することと、③PDF化対象のページを指定しておく必要があります。
Dim objWord As Word.Application
Set objWord = CreateObject(“Word.Application”)
objWord.Visible = True
Dim objDoc As Word.Document
Dim FileName As String
Dim i
Dim 出力FileName As String
’出力ファイル名の設定
’拡張子が記入されていてもなくても対応できるように一旦削除
出力FileName = Cells(2, 1) & “” & Cells(4, 1)
出力FileName = Replace(出力FileName, “.pdf”, “”)
FileName = Cells(2, 1) & “” & Cells(4, 1)
Set objDoc = objWord.Documents.Open(FileName)
i = 7
Do While Cells(i, 1) <> “” ’ 印刷対象のページがなくなるまで実行
objDoc.ExportAsFixedFormat OutputFileName:=出力FileName & “-” & Format(i - 6, “000”) & “.pdf”, ExportFormat:=wdExportFormatPDF, _
Range:=wdExportFromTo, From:=Cells(i, 1), To:=Cells(i, 3)
i = i + 1
Loop
objDoc.Close
Set objDoc = Nothing
objWord.Quit
Set objWord = Nothing
End Sub
「ExportAsFixedFormat」の引数「Range」「From」「To」を指定することで印刷(PDF化)範囲を設定します。
設定内容は下記の通りです。
おすすめ書籍 (広告)
Amazon 楽天 Yahoo検索 |
---|
Amazon 価格:¥3,293円 |
もったいない本舗 おまとめ店 価格:3,677円 |
もったいない本舗 おまとめ店 価格:3,677円 |
VALUE BOOKS Yahoo!店 価格:3,844円 |
oldbooks kiriko 価格:10,000円 |
コメント