![見出し画像](https://assets.st-note.com/production/uploads/images/172005901/rectangle_large_type_2_d73d9a4a9fd613d2b5c21c5a47ec1f58.png?width=1200)
エクセルVBAでOutlookへメール転送 差し込みし連続送信
1)はじめに
VB.NETでOutlookへメール転送ソフト(ここをクリック)を作成してみましたが、今回はエクセルのVBAで転送できるものを作成します。
エクセルで作成しますので、エクセルと送信設定済のアウトルックは必要です。windows10 Office 2021で確認していますが
windows11 Office 2019でも動作します。
VB.NETで作成したもと機能は同じで 差し込み1~4まで設定可能で
登録した件数分 連続でメール送信できるものになります。
以下画像 左が設定内容 右が差し込み後のメールになります。
![](https://assets.st-note.com/img/1738031910-zxAVHq3mBfXNcECept2jrTyK.png?width=1200)
2)エクセル セル登録
シート1 以下のように作成
![](https://assets.st-note.com/img/1738032160-GLU06CeaF7z9phs4YQRbZ5Sg.png?width=1200)
シート2 は転送用データとして以下にように作成します
![](https://assets.st-note.com/img/1738032191-jgNB9G5yMK7E8faOnJe0clxU.png?width=1200)
開始行、メールアドレスTo、CC、BCC ・・・ は数値のみを入力したいので、 ここの入力規制します。
まず、入力制限したいセルを選択し
メニュー データ データの入力規制 を選択します。
![](https://assets.st-note.com/img/1738032378-390hu4wx561nGvRgBWZLdNDt.png?width=1200)
ここで 整数 最小値 0 最大値 99 でOK
![](https://assets.st-note.com/img/1738032522-VBuxnc8XayeROHbJpoCw0G2A.png)
メール文を入力できるように テキストボックスを登録します。
メニュー 挿入 テキストボックスをクリック 横書きテキストボックス描画を選択し 画面の適当な位置に配置してください。
![](https://assets.st-note.com/img/1738032812-9WXvLAPRON83GaSFUjokJmfs.png?width=1200)
テストメール送信ボタンの下に ワーク用も追加します。
計2つ作成し TextBox1 TextBoxwk の名称で登録します。
![](https://assets.st-note.com/img/1738033568-i7HBAmZ82Jbr6RPW1fad5etE.png?width=1200)
名称はメニュー 表示 数式バーにチェックすると 枠が追加されますので
ここに入力し Enterキーを押します、Enterキーを押さないと確定しません
![](https://assets.st-note.com/img/1738033597-2PyXtVKfvx1s3jCDcMzEeUYI.png?width=1200)
3)VBA作成の準備
まず、開発のメニューがない場合 追加しておきます。
メニュー ファイル オプションを開き
リボンのユーザー設定を選択 ここの開発にチェックし OK
![](https://assets.st-note.com/img/1738034175-jDMlbi4n7e2XrJm58UR3hz0s.png?width=1200)
ボタンを3つ追加します。
メニュー 開発 挿入から ボタンを選択し適当な位置に配置します。
名称を ボタン1 ボタン2 ボタン3 とします。
![](https://assets.st-note.com/img/1738038331-CjBN46VZQaLmiub2ocd5MWxf.png)
VBAエディタを開きます。 開発のVisualBasicをクリック
![](https://assets.st-note.com/img/1738034445-hc7v5T8Z4upt3J1wAx9RqnDd.png)
開いたVBAエディタの画面が開きます。
アウトルックを使用できるように参照設定します。
メニュー ツール 参照設定をクリック
![](https://assets.st-note.com/img/1738034459-aNhuOR8Fx9bfwJDLB1MK0lS6.png)
ここからMicrosoft Office 16.0 Object Library にチェックを入れてOK
これでアウトルックが使用できるようになります
![](https://assets.st-note.com/img/1738034575-n83RgMOs0vEqyDHPQpShbWCx.png)
ここから ボタンをクリックすると 差し込み後 テストメールアドレスにメール転送するVBAを作成してみます。
VBAは、「Visual Basic for Applications」の略語でエクセルをVBで拡張できるようになります。
プロジェクト のMicrosoft Excel Objects の右クリックの標準モジュールを選択します。新規に画面が作成されますのでここに入力します。
マクロで組むのは、手入力などの操作を自動にするには便利ですが、今回のメール転送はVBAで作るしか方法はないかもしれません。
![](https://assets.st-note.com/img/1738035073-FDBQgy60TeW9wPS38auIcqXk.png)
4)プログラム作成
テストメールアドレスにメール(ボタン3)にPG
ws1 をSheet1
ws2をSheet2
開始行 シート1のF5を Intで整数に変換し 0でないかチェック
StaRow = Int(ws1.Range("F5").Value)
テストメールアドレスは空白をチェック
添付ファイル
シート1のF9の登録が0でないかチェック
シート2(行NO、列NO) 開始行、F9の値をチェック
test.pdf なら、起動時のPASS+test.pdf に変更
Thisworkbook.pass が起動時のPASSになります
Dim ws1 As Worksheet
Set ws1 = ThisWorkbook.Sheets("Sheet1")
Dim ws2 As Worksheet
Set ws2 = ThisWorkbook.Sheets("Sheet2")
Dim StaRow As Integer '開始行
Dim oldText As String '元文字
Dim newText As String '差し込み文字
Dim TFile As String '添付ファイル
'開始行
StaRow = Int(ws1.Range("F5").Value)
If StaRow = 0 Then
MsgBox ("開始行が0です")
Exit Sub
End If
'テストメールアドレス
If ws1.Range("E19").Value = "" Then
MsgBox ("テストメールアドレスが未入力です")
Exit Sub
End If
'添付ファイル
If Int(ws1.Range("F9").Value) <> 0 Then
TFile = ws2.Cells(StaRow, ws1.Range("F9").Value).Value
If TFile <> "" Then
If InStr(TFile, "\") = 0 And InStr(TFile, ":") = 0 Then
TFile = ThisWorkbook.Path & "\" & TFile
End If
End If
End If
TextBox1をTextBoxwk に保存します。
これは、差し込みするため元の文章を残して置くためです。
TextBoxwkで文字置換処理します。
元文字 シート1のE11の文字
oldText = ws1.Range("E11").Value
新文字 シート2の行、列で登録した文字
newText = ws2.Cells(StaRow, ws1.Range("F11").Value).Value
Replace 関数で 文字置換を実行します。
'テキストボックスをワークにコピー
ws1.TextBoxes("TextBoxwk").Text = ws1.TextBoxes("TextBox1").Text
'差し込み文字1
If Int(ws1.Range("F11").Value) <> 0 And ws1.Range("E11").Value <> "" Then
oldText = ""
newText = ""
oldText = ws1.Range("E11").Value
newText = ws2.Cells(StaRow, ws1.Range("F11").Value).Value
ws1.TextBoxes("TextBoxwk").Text = Replace(ws1.TextBoxes("TextBoxwk").Text, oldText, newText)
End If
メール転送
objMailItemを作成し
.To メールアドレス
.subject タイトル
.Body 本文
.Attachments.Add 添付ファイル
.Display これで、メール画面が開きます。
.send この場合 直接メール送信します。
Dim objOutlook As Object
Set objOutlook = CreateObject("Outlook.Application") '外部ライブラリからOutlookを操作するオブジェクト作成
Dim objMailItem As Object
Set objMailItem = objOutlook.CreateItem(0) 'MailItemオブジェクト作成(末尾の(0)でMailItemオブジェクトを指定)
With objMailItem
.To = ws1.Range("E19").Value 'メールアドレス
.Subject = ws1.Range("B3").Value 'タイトル
.Body = ws1.TextBoxes("TextBoxwk").Text '本文
If TFile <> "" Then
If Dir(TFile) <> "" Then
.Attachments.Add (TFile) 'ファイルを添付
End If
End If
.Display ' メールを表示
End With
Set objOutlook = Nothing
Set objMailItem = Nothing
以下 以下(有料ダウンロードのエクセル) 実行画面になります。
![](https://assets.st-note.com/img/1738040277-u6xYFNnjfUI9wz4T1KEDLtqR.png?width=1200)
![](https://assets.st-note.com/img/1738040289-b5h60iWC1gpD3PeFHTvKzuXB.png?width=1200)
この内容で メール転送できるソフトは作成できますが
このサンプル エクセルファイルをダウンロードできるようにしています。
よければ、ダウンロードしてみてください。
以下から、ファイルをダウンロードできる画面が開きますので
クリックしてダウンロードしてください。
ダウンロードファイル(Mail_XL100)を開きフォルダごと、ディスクトップにでも保存してください。
Mail_XL.xlsm がエクセルファイルになります。ダブルクリックで実行してください。
ドキュメントを開くとき、またはマクロを実行しようとしたときにセキュリティ警告が表示される場合は、信頼できるドキュメントにしてマクロを有効にしてください。 アップロード前にウィルスチェックしています。
ここから先は
¥ 300
Amazonギフトカード5,000円分が当たる
この記事が気に入ったらチップで応援してみませんか?