メールにつける個別の添付用PDFファイルを作成、VBAでOutlook操作 98回

メールにつける個別の添付用PDFファイルを作成、VBAでOutlook操作

マクロ講座 動画編 98回
マクロ講座

動画で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を添付する

  1. 前回まではOUTLOOKを操作し、個別にメールを送信するという内容でした。さらに目的地までの地図を記載した文書を個別にPDFとしてメール添付することにします。

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

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

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

    個別対応したPDFをメールに添付するVBA4
    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
    
  5. VBAでPDF出力をする

  6. 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ファイルをメール送信前に作成

  1. メール送信前に必要なPDFをエクスポートして指定のフォルダに保存しておきます。

    myPath = ThisWorkbook.Path & "\pdf\"

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

    個別対応したPDFをメールに添付するVBA7