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の方はセルのコピペを行うときに必要です)