メール自動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で販売しています。すぐに使いたい方はこちらを活用してください。


メール自動作成 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学習法も紹介しているので、是非チェックしてみてください!







コメント