【コピペでOK】Outlook差出人をセルで変更|Excel VBAで送信元切替&自動送信

コピペで使えるコード集

メール自動vbaを作ってみたけど、差出人の変え方がわからない…
送信元を変更できるVBAを作りたい!

ひとつのOutlookで複数のアカウントを管理するとき、差出人の選択は意外と面倒な作業です。そこで本記事では、差出人アドレスを変更できるメール自動送信VBAを紹介します。

またこれまで紹介したVBAを改良し、「表示/送信」のフラグをセルに書くだけで、下書き表示・即送信を判別してくれる機能も追加しています。コードはコピペするだけで動作し、初心者でも実務にそのまま使用できます。

ぜひこの記事を参考にして、メール業務の効率化をしてみてください!また、単純な自動化であれば下記リンクのメール自動化VBAがおすすめです。ぜひこちらも参考にしてみてください。

【結論】コピペで使えるメール作成 VBA

以下のコードをコピペするだけで、Outlookの添付付きメールを自動作成できます。

実行の際、あらかじめ宛先/CCなどの項目の作成が必要です。詳しくはこの後紹介します。

Sub SendEmail_Attachment()
    Dim olApp As Outlook.Application
    Dim olMail As Outlook.MailItem
    Dim ws As Worksheet
    Dim lRow As Long, i As Long, j As Long
    Dim strTo As String, strCC As String, strSub As String, strBody As String, strFrom As String
    Dim strAttachment As String

    ' Outlookのインスタンス取得(すでに起動していればそれを使う)
    On Error Resume Next
    Set olApp = GetObject(, "Outlook.Application")
    If olApp Is Nothing Then
        Set olApp = New Outlook.Application
    End If
    On Error GoTo 0

    ' メール送信リストが記載されたシートを設定
    Set ws = ThisWorkbook.Sheets("Sheet1")

    ' 最終行を取得
    lRow = ws.Cells(Rows.Count, 2).End(xlUp).Row

    ' 1行ずつデータを取得し、メールを送信
    For i = 2 To lRow
        ' 宛先・CC・件名・本文を取得
        strFrom = ws.Cells(i, 1).Value
        strTo = ws.Cells(i, 2).Value
        strCC = ws.Cells(i, 3).Value
        strSub = ws.Cells(i, 4).Value
        strBody = ws.Cells(i, 5).Value & vbCrLf _
                  & ws.Cells(i, 6).Value & vbCrLf _
                  & ws.Cells(i, 7).Value & vbCrLf _
                  & ws.Cells(i, 8).Value

        ' メール作成
        Set olMail = olApp.CreateItem(olMailItem)
        With olMail
            .SendUsingAccount = Session.Accounts(strFrom)
            .To = strTo
            .CC = strCC
            .Subject = strSub
            .Body = strBody

            ' 添付ファイル(9列目以降)
            For j = 9 To 13
                strAttachment = ws.Cells(i, j).Value
                If strAttachment <> "" And Dir(strAttachment) <> "" Then
                    .Attachments.Add strAttachment
                End If
            Next j

            Select Case ws.Cells(i, 14).Value
                Case "送信"
                    .Send
                Case Else
                    .Display
            End Select
        
        End With

        ' メモリ解放
        Set olMail = Nothing
    Next i

Cleanup:
    Set olApp = Nothing
    Exit Sub

ErrorHandler:
    MsgBox "エラーが発生しました: " & Err.Description, vbExclamation
    Resume Cleanup
End Sub

※当サイトで紹介している他のコピペコードは、コチラにまとめています!

【番外】そのまま使えるエクセルファイル

VBAが分からないという方向けに、VBAが入ったエクセルファイルを用意しました。ここに内容を書き込むだけで、簡単にメールが自動作成できます。

PCによっては「参照設定の追加」が必要となることがあります。エラーが出る場合は、この記事で紹介している「参照設定の追加」を試してください。

エクセルファイルはNoteで販売しています。すぐに使いたい方はこちらを活用してください。

【Excelツール】Outlook一括送信|すぐに使える完成版ダウンロード|犬井 | 効率化大全
同じようなメールを、宛名と添付を変えて1件ずつ送るのが面倒… 挨拶メール、BCCじゃなくて一人ひとりに宛てて送りたい 同じような文面のメールを、宛名だけ変えて何十件も送る作業に時間を取られていないでしょうか? この記事は、そんな「メール送信...

メール自動作成 VBA の動作

実行すると、リストをもとにOutlookのメールが自動作成されます。なお、送信元の欄に書かれたアドレスが差出人になります。

書かれた送信元が差出人に設定されたメールが作成されます。送信確認欄を「送信」とすれば、下書きを表示せず、そのまま自動送信されます。

業務効率化におすすめ書籍『9選』はコチラから!

メール自動送信 VBA の使い方

ここからはVBAのコピペ方法を含めて、使い方を紹介します。

エクセルの準備(項目設定・to/cc/本文/添付の入力)

まず、エクセルのシートに以下のタイトルを入力してください

・A列:送信元
・B列:宛先(To)
・C列:CC
・D列:件名
・E列:会社名
・F列:担当者
・G列:本文
・H列:署名
・I列~M列:添付
・N列:送信確認

直接この名前をVBAで認識はしていません。ただ、リスト入力の間違い防止になるため、この内容で入力してください。

VBAの埋込/ボタンの挿入

エクセルの「開発」タブから「Visual Basic」エディタを開きます。そしてVBAコードを「標準モジュール」に貼り付けます。

「開発」を出す設定コードの書き方は、VBAの基礎まとめのページで詳しく解説しています。こちらの記事もぜひ参考にしてみてください。

【重要】参照設定の追加

このVBAを使用するためには、参照設定の追加が必要になります。エクセル上部の[開発]→[Visual Basic]と進み、VBAの編集画面を表示させます。(開発タブがない方はコチラ)

VBAの編集画面から[ツール]→[参照設定]と進みます。

参照設定の下の方に、[Microsoft Outlook 16.0 Object Library]があります。チェックを入れOKボタンを押します。

メール内容の書き込み・VBA実行

あとはメール内容を書き、 VBAを実行すればメールが自動的に作成されます。

会社名・担当者は、本文の上側に入るように設定しています。また署名本文の下に入るように設定しています。なお改行は一つしか入れていません。必要があれば、セル内で改行を足すか、コードを編集するようにしてください。

なお、H列の添付ファイルは、フルパスで入力してください。

そして今回追加したA列の送信元ですが、Outlookに登録されている送信元以外は設定できないので注意してください。また、A列に空欄があると動作しないので必ず記載してください。

また、N列は「送信」と書いてある場合のみ、自動送信されます。それ以外の文字や空欄の場合は下書きが表示されます。

また、送信ボタンを設置すると、マクロ画面を開く必要がなくなりとても便利です。ボタンのつけ方は、こちらの記事を参考にしてください。

さいごに

今回は、Outlookのメール自動作成VBAを紹介しました。とても効率がUPするVBAなので、ぜひ活用してみてください。

VBAを使えば、デスクワークの時間や手間を大幅に削減できます。VBAで仕事をスマートにこなして、自分の時間を有効活用しましょう!

今回紹介したようなVBAスキルは、一度身につければ一生使える武器となります。コピペも便利ですが、本で体系的に学ぶことで「自分でコードを書く力」を短期間で身につけられます。

以下の記事では、Kindle Unlimited(読み放題)無料で読めるおすすめのVBA書籍を厳選して紹介しています。生成AIを前提とした、今までとは全く違ったVBA学習法も紹介しているので、是非チェックしてみてください!

 VBA初心者におすすめの『5冊』はこちら!

※この記事を見た方は、こちらの記事もおすすめです!

コメント

タイトルとURLをコピーしました