Excel VBA 基礎講座 メール送付
2024年11月7日今回のExcelVBA基礎講座では、Outlookアプリケーションを用いてExcelからメールの送信をするマクロを作成していきます。
Outlookの機能を変数に入れ活用することが出来、応用するとExcelで作成した連絡先の一覧表のアドレスに、一括でメールを送信することも可能になります。
動画の解説で学びながら、演習問題にもチャレンジしていきましょう。
メール送付 1.メール送受信のアイテムを準備する
メール送受信のアイテムを準備する
●ソース
Sub Sample( )
Dim OL As Outlook.Application //OLの中にOutlookのアプリケーションを入れる宣言をする
Dim MI As Outlook.MailItem //MIの中にOutlookのメールアイテムを入れる宣言をする
Set OL=CreateObject(“Outlook.Application”) //変数OLの中にOutlookのアプリケーションに入れる
Set MI=OL.CreateItem(olMailItem) //変数MIの中にOL中のメールを送受信する機能を入れる
End Sub
メール送付 2.メールを送信する
メールを送信する
●ソース(※1.メール送受信のアイテムを準備するのソースの続き)
Sub Sample( )
Dim OL As Outlook.Application
Dim MI As Outlook.MailItem
Set OL=CreateObject(“Outlook.Application”)
Set MI=OL.CreateItem(olMailItem)
MI.SentOnBehalfOfName=”aaa@aaaa.com” //送信者
MI.To=”kunren0099@mtec-hp.com //送信先
MI.CC=”test@test.com” //コピーを送る先
MI.BCC=”test2@test2.com” //コピーを送る先2
MI.Subject=”こんにちは” //件名
MI.Body=”いつもお世話になっております”&vbCr&”よろしくお願いします” //vbCr=本文内で改行
MI.Send //メールを送信する
’MI.Display (※メールの入力画面を確認する)
Set OL=Nothing //使い終わったらメール設定を空にする
Set MI=Nothing //使い終わったらメール設定を空にする
End Sub
この単元の演習問題
下図のような入力フォームを作成し、担当者とメールアドレスを入力し、担当者が順に登録されるように処理を行います。
メール一括送信ボタンをクリックすると、それぞれの担当者にメールが送信されるようにプログラムを作成してください。
件名はセルE2の値、本文はE3の値を利用するものとします。
※ここでは、CCとBCC、添付ファイルはなしで送信されるように処理を記述します。
演習問題解説1
Private Sub CommandButton1_Click( )
Range(“a100000”).End(xlUp).Offset(1,0).Select /最後に入力されたセルの一つ下のセルを選択
ActiveCell.Value=TextBox1.Value //上記で選択したセルにテキストボックス1に入力した内容を入れる
ActiveCell.Offset(0,1).Value=TextBox2.Value //上記で選択したセルの一つ右隣りのセルにテキストボックス2に入力した内容を入れる
End Sub
演習問題解説2
●ソース(メールを一括送信する)
Private Sub CommandButton1_Click( )
Dim OL As Outlook.Application
Dim MI As Outlook.MailItem
Set OL=CreateObject(“Outlook.Application”)
Set MI=OL.CreateItem(olMailItem)
Range(“a3”).Select
Do While ActiveCell.Value<>”” //値が等しくない・空ではない場合は以下の指示を繰り返す
tanto=ActiveCell.Value
mail=ActiveCell.Offset(0,1).Value
‘MsgBox tanto&”と”&mail (※確認用)
MI.SentOnBehalfOfName=mail
MI.To=”kunren0099@mtec-hp.com”
MI.Subject=Range(“e2”).Value
MI.Body=Range(“e3”).Value
MI.Display
ActiveCell.Offset(0,1).Select //一つの処理が終わったら1行下0列のセルを選択する
Loop
End Sub