動画でExcel メールにつける個別の添付用PDFファイルを作成、VBAでOutlook操作
動画版「マクロ講座」です。
96回97回のマクロ講座では Outlook を操作して Excel シートのデータから個別に対応したメールを一括で作成しました。
今回はその個別に対応したメールに、さらに個別に対応したPDFファイルを添付する、と言う内容のマクロです。
前回のマクロの内容は面接の日付と時間を個別にお知らせするというものでしたが、今回は個別に面接の時間日時を記載した文面と、会社の案内図を記載したPDFファイルを作成して、それをメールに添付すると言うことにしたいと思います。
この PDF ファイルはエクセルシート上で作成した文書に個別の氏名を入れて PDF にします。
PDF出力の際使うメソッドはシートオブジェクトのExportAsFixedFormatメソッドです。
(サンプルファイルは、こちらです。 メールにつける個別の添付用PDFファイルを作成、VBAでOutlook操作、サンプル98回)
前回まではOUTLOOKを操作し、個別にメールを送信するという内容でした。さらに目的地までの地図を記載した文書を個別にPDFとしてメール添付することにします。

PDFにも氏名や日付、日時など、個々に変更する必要がある箇所があります。 これもマクロを利用して個別対応した添付文書を作成していきます。

添付用の文書は"添付"という名前のシートに記述してあり、変更する箇所をFor文で繰り返すことにより氏名などが変わるようにコードを書きます。

For文でカウントするPrintNOは、Sheets("mail")上にある名前をつけたセルです。
その番号をマクロで変更するたびに、Sheets("添付")に表示される文字列が変わるように数式を書いてあります。

Sub pdfprintout()
' 事前に保存用のフォルダを作成しておく
Dim filename As String, Name_pre As String, myPath As String
Dim i As Long, ws As Worksheet, 添付_sh As Worksheet
Set ws = ThisWorkbook.Sheets("mail")
Set 添付_sh = ThisWorkbook.Sheets("添付")
myPath = ThisWorkbook.Path & "\pdf\"
For i = 1 To 7
ws.Range("PrintNO") = i
Name_pre = 添付_sh.Range("A4").Value
filename = myPath & Name_pre & 添付_sh.Range("B2").Value & ".pdf"
添付_sh.ExportAsFixedFormat Type:=xlTypePDF, filename:=filename
Next i
End Sub
ExcelをPDFにして保存するコードは
ExportAsFixedFormat メソッドを使います。
構文は
ExportAsFixedFormat (型、 FileName、 Quality、 IncludeDocProperties、 IgnorePrintAreas、 From、 To、 OpenAfterPublish、 FixedFormatExtClassPtr)
.ExportAsFixedFormat Type:=xlTypePDF
今回は、対象となるオブジェクトはシートです。
変数名で指定した添付_shのことで、ThisWorkbook.Sheets("添付") となります。
ActiveWorkbookをPDFでエクスポートする場合は、以下のように書きます。
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF FileName:="アクティブシート.pdf"
メール送信前に必要なPDFをエクスポートして指定のフォルダに保存しておきます。
myPath = ThisWorkbook.Path & "\pdf\"

次回の動画では、メインのメール送信マクロのコードを、作成したPDFを個別のメールに添付するコードに書き換えます。
