メールにつける個別の添付用PDFファイルを作成、VBAでOutlook操作
動画でExcel メールにつける個別の添付用PDFファイルを作成、VBAでOutlook操作
メールにつける個別の添付用PDFファイルを作成、VBAでOutlook操作
動画版「マクロ講座」です。
96回97回のマクロ講座では Outlook を操作して Excel シートのデータから個別に対応したメールを一括で作成しました。
今回はその個別に対応したメールに、さらに個別に対応したPDFファイルを添付する、と言う内容のマクロです。
前回のマクロの内容は面接の日付と時間を個別にお知らせするというものでしたが、今回は個別に面接の時間日時を記載した文面と、会社の案内図を記載したPDFファイルを作成して、それをメールに添付すると言うことにしたいと思います。
この PDF ファイルはエクセルシート上で作成した文書に個別の氏名を入れて PDF にします。
PDF出力の際使うメソッドはシートオブジェクトのExportAsFixedFormatメソッドです。
(サンプルファイルは、こちらです。 メールにつける個別の添付用PDFファイルを作成、VBAでOutlook操作、サンプル98回)
マクロ動画 メールにつける個別の添付用PDFファイルを作成、VBAでOutlook操作
VBAでメール送信、個別にPDFを添付する
-
前回までは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"
VBAでPDF出力をする
PDFファイルをメール送信前に作成
-
メール送信前に必要なPDFをエクスポートして指定のフォルダに保存しておきます。
myPath = ThisWorkbook.Path & "\pdf\"
-
次回の動画では、メインのメール送信マクロのコードを、作成したPDFを個別のメールに添付するコードに書き換えます。