VBAオジサンのらくがき帳

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