🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

4508閲覧

Excel VBAで複数のmsgファイルを自動送信したい

taronote

総合スコア5

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2019/11/17 09:10

前提・実現したいこと

特定のフォルダに格納されている複数のmsgファイルをExcelのボタン一つで送信したいです。
請求書を複数の得意先へ送信するツールを作っています。

発生している問題・エラーメッセージ

請求書のPDFファイルを各送信先へ送付するmsgファイルを作成するところまでは行ったのですが、そのmsgファイルを一斉に送信するコードをご教示いただきたいです。

該当のソースコード

試したこと

補足情報(FW/ツールのバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Youbun

2019/11/19 00:19

https://zangyou-macro.com/macro-outlook1/#i このサイトが参考になりそうです。 「msgファイルを一斉に送信する」この工程の どの部分で詰まっているのか詳細を記入すると回答が来やすいと思います。
taronote

2019/11/19 14:17

ご返信ありがとうございます。 「msgファイルを一斉に送信する」につきまして ・特定のフォルダに送信したいメールのmsgファイルは作成済の状態です。  (宛先、件名、メール本文、添付ファイル付きのメールです) ・特定のフォルダにあるmsgファイルをExcelVBAで自動的に送信したい  そのための手法をご教授頂きたいです。 ・アドバイスを頂いたサイトや  https://www.sejuku.net/blog/74389  http://www.excel.studio-kazu.jp/kw/20130207105435.html  などでは、Excelのシートの中に宛先情報などがありオブジェクトでメールを作成し、メソッドで送信するような仕組みが多いのですが、  「msgファイルとして出来上がっているメールを開いて自動送信する」というサンプルが見つからないため困っている状況です。 l
guest

回答1

0

ベストアンサー

これで行けました。
基本設計は参考のサイトと同じで、
Set msg = oApp.CreateItemFromTemplate(msgname)
この部分のコードで
フォルダに格納されている複数のmsgファイルを開く
の部分が解決できると思います。

vb

1Sub SendMsg() 2 ' パス設定※自分のソースにあった形式で! 3 Dim msgname As String 4 msgname = "C:\ぱす名\ファイル名.msg" 5 ' Outlook変数初期設定 6 Dim oApp As Object 7 Dim msg As Object 8 Set oApp = CreateObject("Outlook.Application") 9 Set msg = oApp.CreateItem(olMailItem) 10 ' msgファイル設定して送信 11 Set msg = oApp.CreateItemFromTemplate(msgname) 12 msg.Send 13 ' 変数開放 14 Set olApp = Nothing 15 Set msg = Nothing 16End Sub

個人的にはこの関数に「パスを格納した配列」を引数にして、
「' msgファイル設定して送信」の部分を配列要素数だけループさせる仕様にすると
使いやすいかなと思いました。
※msg変数の開放は1メールごとにしないとおかしくなるかも・・・

投稿2019/11/20 00:35

Youbun

総合スコア125

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

taronote

2019/11/20 14:30

ご回答ありがとうございます。送信できました! 私は普段Option Explicitをつけているので頂いたサンプルコードに Dim olMailItem を加え、 Set olApp = Nothing を Set oApp = Nothing に修正し、 ツール-参照設定で「Microsoft Office 16.0 Object Livrary」をチェックしたところ、 コードを走らせるとOutlookが立ち上がることなくメールが送信され、Outlookを起動すると送信済トレイに入り、送信先のメールアドレスにもメールが届いていることを確認しました。 この度はアドバイスいただき本当にありがとうございました! m(_ _)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問