決まった時間に添付ファイル付きのメールを自動送信するためのスクリプト


コメントにて以下のようなご要望をいただきました。


■やりたいこと
指定した時刻になったら、特定のメールアドレス宛に決まったファイルを添付して送信したい。

■詳細
「決まった件名のメッセージを受信したら、データを 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 ' メールを送信

マクロの登録方法やメニューへの追加について

決まった時間に添付ファイル付きのメールを自動送信するためのスクリプト」への6件のフィードバック

  1. いつも大変お世話になっております。
    上記、タスクスケジューラについて質問があります。
    .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)

      としてみてください。

  2. 突然の投稿、失礼させていただきます。

    自作のサービスで恐縮ですが、
    以下のサービスの運営を行っておりますので、
    こちらのページの内容と関連があるかと思い、
    投稿させていただきます。

    リマインドメールの送信予約•時間指定ならMaiList
    https://mailist.info/

    毎週、毎月など繰り返しのメール送信予約や、
    添付メールの送信予約などができることが特徴となっております。
    宜しくお願い申し上げます。

  3. お世話になります。こちらのvbsの事で一つご教授頂きたいことがございます。
    諸事情でメールの自動送受信が禁止されているため、このvbsですと送信フォルダに溜まったままになってしまいます。
    vbsでメールの送受信まで行いたいのですが、なにかいい方法は無いでしょうか?

    • 時間になったら送受信を実行するというスクリプトを作成し、タスク スケジューラーで実行するというようなものが考えられます。
      が、それは禁止されている自動送受信になるのではないでしょうか?

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中