会社のメールソフトがNotesだから、効率化の情報が少ない…
Notesメールでも一斉送信がしたい!
Notesメールの効率化は情報が少なく、独学で難しいツールの一つです。私も以前はNotesユーザーだったので、その苦労は分かります。Outlookであればすぐに自動化のVBAが出てくるのに、Notesはほとんどわからない…結構そういう人も多いと思います。
そこで今回は、ExcelからNotesメールを一括送信するVBAを紹介します。NotesでもOutlook同様に自動化が可能なので、ぜひともこの記事を参考に自動化を進めてみてください。
なお、現在私の手元にはNotes環境がないため、今回のコードは過去作成したツールをベースにしています。
動作検証がリアルタイムでできていない点、ご了承ください。
【コピペでOK】Notesメール一括送信VBAコード
以下のコードをコピペするだけで、Notesの添付付きメールを自動作成できます。
実行の際、あらかじめ宛先/CCなどの項目の作成が必要です。詳しくはこの後紹介します。
Option Explicit
Sub SendNotesMail_List()
' Lotus Notesの定数定義(Late Binding用)
Const EMBED_ATTACHMENT As Integer = 1454
Dim wkNSes As Object ' lotus.NOTESSESSION
Dim wkNDB As Object ' lotus.NOTESDATABASE
Dim wkNDoc As Object ' lotus.NOTESDOCUMENT
Dim wkNRtItem As Object ' lotus.NOTESRICHTEXTITEM
Dim wkNAtt As Object ' lotus.NOTESEMBEDDEDOBJECT
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
Dim attPath As String
' 対象のシート(アクティブシート または シート名を指定)
Set ws = ActiveSheet
' 最終行を取得(A列を基準)
lRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
' Notesのセッションを起動(ループの外で1回だけ実行)
Set wkNSes = CreateObject("Notes.NotesSession")
' メールデータベースを開く
Set wkNDB = wkNSes.GETDATABASE("", "")
wkNDB.OpenMail
' 2行目から最終行までループ
For i = 2 To lRow
' ①リストの内容を変数に格納
strTo = ws.Cells(i, 1).Value ' A列:宛先
strCC = ws.Cells(i, 2).Value ' B列:CC
strSub = ws.Cells(i, 3).Value ' C列:件名
' ②本文の組み立て(指定のフォーマット)
strBody = ws.Cells(i, 4).Value & vbCrLf _
& ws.Cells(i, 5).Value & vbCrLf _
& ws.Cells(i, 6).Value & vbCrLf _
& ws.Cells(i, 7).Value
' Notesドキュメントの作成
Set wkNDoc = wkNDB.CREATEDOCUMENT()
' ヘッダー情報のセット
wkNDoc.Subject = strSub
wkNDoc.SendTo = Split(strTo, ",") ' カンマ区切りで複数宛先に対応
If strCC <> "" Then
wkNDoc.CopyTo = Split(strCC, ",")
End If
' リッチテキスト(本文・添付用)の作成
Set wkNRtItem = wkNDoc.CreateRichTextItem("BODY")
With wkNRtItem
.APPENDTEXT strBody
.ADDNEWLINE 2 ' 本文の後に改行を入れる
' ③添付ファイルの処理(H列[8] ~ L列[12] の5列分を確認)
For j = 8 To 12
attPath = ws.Cells(i, j).Value
' 空欄でなければ添付処理を行う
If attPath <> "" Then
' ファイルが存在するか簡易チェック(任意)
If Dir(attPath) <> "" Then
Set wkNAtt = .EmbedObject(EMBED_ATTACHMENT, "", attPath)
End If
End If
Next j
End With
' メールを送信する (False = フォームを保存せずに送信)
wkNDoc.Send False
' オブジェクト解放(ループ内)
Set wkNAtt = Nothing
Set wkNRtItem = Nothing
Set wkNDoc = Nothing
Next i
' オブジェクト解放(全体)
Set wkNDB = Nothing
Set wkNSes = Nothing
MsgBox "全件送信完了しました", vbInformation
End Sub
業務効率化におすすめ書籍『9選』はコチラから!
マクロの動作概要
実行すると、リストをもとにNotesのメールが自動作成されます。添付ファイルは無しでもOKで最大5個まで追加できます。

デフォルトでは、自動送信をオフにしていますが、送信まで自動化することも可能です。
設定詳細:ExcelシートとNotesの準備
ここからはVBAのコピペ方法を含めて、使い方を紹介します。
エクセルの準備(項目設定・to/cc/本文/添付の入力)
まず、エクセルのシートに以下のタイトルを入力してください
・A列:宛先(To)
・B列:CC
・C列:件名
・D列:会社名
・E列:担当者
・F列:本文
・G列:署名
・H列:添付

直接この名前をVBAで認識はしていません。ただ、リスト入力の間違い防止になるため、この内容で入力してください。す。
Notesの起動を確認
このVBAは「Notesを起動し、ログインしておくこと」が必須となります。
VBAを実行する前に、Notesが起動されているかを確認してください。
VBAの埋込/ボタンの挿入
エクセルの「開発」タブから「Visual Basic」エディタを開きます。そしてVBAコードを「標準モジュール」に貼り付けます。
「開発」を出す設定やコードの書き方は、VBAの基礎まとめのページで詳しく解説しています。こちらの記事もぜひ参考にしてみてください。
メール内容の書き込み・VBA実行
あとはメール内容を書き、 VBAを実行すればメールが自動的に作成されます。
会社名・担当者は、本文の上側に入るように設定しています。また署名は本文の下に入るように設定しています。
なお改行は一つしか入れていません。必要があれば、セル内で改行を足すか、コードを編集するようにしてください。
H列の添付ファイルは、フルパスで入力してください。

また、送信ボタンを設置すると、マクロ画面を開く必要がなくなりとても便利です。ボタンのつけ方は、こちらの記事を参考にしてください。
まとめ
今回は、Outlookのメール自動作成VBAを紹介しました。とても効率がUPするVBAなので、ぜひ活用してみてください。
今回紹介したようなVBAスキルは、一度身につければ一生使える武器となります。コピペも便利ですが、本で体系的に学ぶことで「自分でコードを書く力」を短期間で身につけられます。
以下の記事では、Kindle Unlimited(読み放題)で無料で読めるおすすめのVBA書籍を厳選して紹介しています。生成AIを前提とした、今までとは全く違ったVBA学習法も紹介しているので、是非チェックしてみてください!






コメント