ExcelからOutlookメールを作成する
2021-07-01 00:00:00
VBAを利用してOutlookのメールを作成する方法を簡単にまとめました。サンプルとしてシンプルなテキストメールの作成と、Excelのワークシートからセルを張り付ける方法を紹介しています。そのままコピペで使えるようライブラリの参照は設定せず、遅延バインディングで作成しています。コードを実行する際は、先にOutlookが開いていないと失敗しますので、実際に運用で使う場合には適当なエラーハンドリングも必要になると思います。
シンプルなテキストメール
Sub CreateNotificationMail()
Dim ol As Object 'Outlook.Application
Dim ml As Object 'Outlook.MailItem
Set ol = GetObject(, "Outlook.Application")
Set ml = ol.CreateItem(0) 'olMailItem
ml.Display
ml.BodyFormat = 1 'olFormatPlain
ml.Subject = "業務連絡"
ml.To = "all@filefish.net"
ml.Body = "皆様。" & vbCrLf & vbCrLf & _
"お疲れ様です。" & vbCrLf & _
"明日はお休みいただきます。" & vbCrLf & vbCrLf & _
"VBAオジサン"
End Sub
こちらのプロシージャを実行すると下のようにメールが作成されます。
ワークシートからセルの貼り付け
スプレッドシートから下のようなデータをコピペする方法です。
Sub CopyFromWorksheet()
Dim ol As Object 'Outlook.Application
Dim ml As Object 'Outlook.MailItem
Dim wd As Object 'Word.Document
Set ol = GetObject(, "Outlook.Application")
Set ml = ol.CreateItem(0) 'olMailItem
ml.Display
ml.BodyFormat = 2 'olFormatHTML
Set wd = ol.ActiveInspector.WordEditor
With wd.Windows(1).Selection
.Font.Size = 14
.TypeText "Table1:"
.TypeParagraph
Range("A1:B3").Copy
.Paste
End With
End Sub
こちらのプロシージャを実行すると下のようにメールが作成されます。
事前バインドを使う場合
事前バインディングを行う場合にはVBEのツールメニュー→参照設定…よりライブラリを選択します。(Wordの方はセルのコピペを行うときに必要です)