コメントにて以下のようなご要望をいただきました。
■やりたいこと
指定した時刻になったら、特定のメールアドレス宛に決まったファイルを添付して送信したい。
■詳細
「決まった件名のメッセージを受信したら、データを CSV ファイルに保存するマクロ」を拡張したいです。
データが追加されたCSVファイル(サンプルでは c:\orders\data.csv)を、指定した時刻(例えば毎日12時)に、特定のメールアドレス(例えば report@example.com)へ自動送信する、という内容です。コンピュータは常に起動しており、ログオンしてネットワークに接続されている環境を想定しています。
Outlook のマクロには、指定した時間にマクロを実行するという機能はありません。しかし、スクリプトを使って Outlook でメールを送信するということは可能です。したがって、メールを送信するスクリプトを作成し、それを Windows のタスク スケジューラで実行させることでご要望は満たせると思います。
まず、メモ帳などのテキストエディタで下記の内容を outlooksend.vbs というような拡張子 vbs のファイルとして保存します。そしてタスク スケジューラによりこのスクリプトを指定時刻に動作させることで、決まった時間にメールを自動送信することができます。
' ここをトリプルクリックでスクリプト全体を選択できます。
Set olkApp = CreateObject("Outlook.Application")
Set objMsg = olkApp.CreateItem(0) ' 0 = olMailItem
objMsg.To = "report@example.com" ' 宛先を指定
objMsg.Subject = "添付ファイル送信" ' 件名を指定
objMsg.Body = "添付ファイルを送信します。" ' 本文を指定
objMsg.Attachments.Add "c:\orders\data.csv" ' 添付ファイルを指定
objMsg.Send ' メールを送信
いつも大変お世話になっております。
上記、タスクスケジューラについて質問があります。
.vbsファイルを作成して、下記のように保存しましたが、
スケジューラを実行したところエラーが出てしまいます。
なお、outlookのvba上でプロシージャとして実行させたところ、
問題なく実行されるため原因がいまいちわかりません。
※おそらくスクリプトの知識がないためと思われます。
修正すべき点をご指摘いただけると助かります。
行: 3
文字:1
エラー「型が一致しません。”:format”」
コード 800a000d
ソースvbscript実行時エラー
———————————————–
mydate = Mid(Format(Date, “yyyymmdd”), 3, 6)
Set olkApp = CreateObject(“Outlook.Application”)
Set objMsg = olkApp.CreateItem(0) ‘ 0 = olMailItem
objMsg.To = “xxxx@xxxx” ‘ 宛先を指定
objMsg.Subject = “APD_DATA”
objMsg.Body = “添付ファイルを送信します。” ‘ 本文を指定
objMsg.Attachments.Add “C:\Users\Owner\Documents\APD\” & mydate & “_APD_FSP.xls” ‘ 添付ファイルを指定
objMsg.Send ‘ メールを送信
————————————————-
VBA と VBScript では使える関数が微妙に違い、VBScript では Format 関数が使えません。
mydate = Mid(Replace(FormatDateTime(Now,2),”/”,””), 3, 6)
としてみてください。
さっそくありがとうございました。無事動きました。
突然の投稿、失礼させていただきます。
自作のサービスで恐縮ですが、
以下のサービスの運営を行っておりますので、
こちらのページの内容と関連があるかと思い、
投稿させていただきます。
リマインドメールの送信予約•時間指定ならMaiList
https://mailist.info/
毎週、毎月など繰り返しのメール送信予約や、
添付メールの送信予約などができることが特徴となっております。
宜しくお願い申し上げます。
お世話になります。こちらのvbsの事で一つご教授頂きたいことがございます。
諸事情でメールの自動送受信が禁止されているため、このvbsですと送信フォルダに溜まったままになってしまいます。
vbsでメールの送受信まで行いたいのですが、なにかいい方法は無いでしょうか?
時間になったら送受信を実行するというスクリプトを作成し、タスク スケジューラーで実行するというようなものが考えられます。
が、それは禁止されている自動送受信になるのではないでしょうか?
お世話になります。
ただいま自動で添付ファイルを送信する術を模索していてこちらのページにたどり着きました。
質問なのですが、ご教示頂いたvbsを実行すると、ちゃんとメールは送信されるのですが、outlookを手動で起動した際に送信トレイにvbsで送信したメールが残ったままなのか、再度同じメールが送られてしまい、受信者は二重で受信するカタチとなってしまっております。
vbsで送信した際に、送信トレイからなくなる方法をご教示下さい。
(主導でoutlookを起動しても再度送信されない)
[…] […]