【VBA】エクセルをPDF化してメールに添付する(Outlook)

エクセルのシートをPDF化して、Outlookに添付するVBAを紹介します。

エクセルファイルをそのままメールに添付できない時は多いですよね。

そうですね。
請求書、領収書、発注書などはエクセルで計算させると便利ですが、
エクセルだと受け取った人も修正ができちゃいますよね。

今回は、PDF化したエクセルのシートをOutlookに添付します。

目次

エクセルをPDF化してメールに添付する(outlook)VBA

エクセルをPDF化してメールに添付する(outlook)VBA

※メールを送信せず、プレビューで止めています

マクロが設定されているファイル名が「BOOK1.xlsm」の場合、次のようなメールが作成される。

Sub SendWorkSheetToPDF()

Dim Wb As Workbook
Dim FileName, MailA, TextA As String
Dim OutlookApp As Object
Dim OutlookMail As Object

Set Wb = Application.ActiveWorkbook

MailA = “——@aaaaaa.co.jp”
TextM = “Hello”

FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, “.”)

If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex – 1)

FileName = FileName & “.pdf”
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName

Set OutlookApp = CreateObject(“Outlook.Application”)
Set OutlookMail = OutlookApp.CreateItem(0)

With OutlookMail
.To = MailA
.CC = “”
.BCC = “”
.Subject = “こんにちは”
.Body = TextM
.Attachments.Add FileName
.Display
End With

Kill FileName

Set OutlookMail = Nothing
Set OutlookApp = Nothing

End Sub

解説

●本文を参照する場合
TextM = “Hello”

TextM = Range(“A1”)
セル「A1」に入力したとおりの内容が本文に記載される 

●CCやBCCを設定する
.CC = “”
.BCC = “”

空欄「””」としている部分にアドレスとなる文字列を入力する

●プレビューをせずに送信する
.Display

.Send

応用編

複数の宛先に、それぞれの内容に併せたファイルを添付したい場合

  1. シートを作成する
  1. 「一覧」シートに宛先とメールアドレスを記入する
  1. 宛先ごとのシートに内容を作成する

VBA

Sub SendWorkSheetToPDF()

Dim a As Long
Dim Wb As Workbook
Dim FileName, Company, MailA, TextA As String
Dim OutlookApp As Object
Dim OutlookMail As Object

On Error Resume Next

Set Wb = Application.ActiveWorkbook
a = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row

For i = 2 To a
Sheets(i).Select
Company = Sheets(1).Cells(i, 1)
MailA = Sheets(1).Cells(i, 2)
TextM = “添付ファイル参照”

FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, “.”)

If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex – 1)

FileName = FileName & “_” & Company & “様.pdf”
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName

Set OutlookApp = CreateObject(“Outlook.Application”)
Set OutlookMail = OutlookApp.CreateItem(0)

With OutlookMail
.To = MailA
.CC = “”
.BCC = “”
.Subject = “お支払額のご連絡”
.Body = Company & “ 様” & vbCrLf & vbCrLf & TextM
.Attachments.Add FileName
.Display
End With

Kill FileName

Set OutlookMail = Nothing
Set OutlookApp = Nothing

Next i

Sheets(1).Select

End Sub

解説

エラーの場合は次に進む

左から1番目のシート「一覧」・A列の最終行を取得する

2~aまでにおいて(ループ)
添付するシートを選択する
宛先の取得
メールアドレスの取得
本文の取得

添付ファイルのファイル名を作成
→ファイル名_宛先様.pdf

Outlookの設定
メールアドレス
CC
BCC
メールタイトル
本文:「宛先」様 <改行><改行> 本文
添付ファイルを作成
プレビュー ※直接送りたい場合は「Send」

それぞれを空にする

結果

エクセルをPDF化してメールに添付するVBAでした。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

子育てに奮闘しながらも、再びガッツリ走り込める日を夢見るフルタイム会社員。

コメント

コメントする

CAPTCHA


目次