dポイントプレゼントキャンペーン実施中!

メールで日報を送信する作業が日々のルーチン業務となっているのですが、
その負荷を軽減するため、できるだけ自動化したいと考えています。
メールを作成し、送信直前まで仕上げたいのですが、どこまで自動化できるでしょう。
※万が一の事故を防ぐため当面「送信」操作は人の手で行いたいです。

メール作成の内容は、
・指定のファイルを添付
・特定の宛先、件名、本文を挿入
です。

条件を細かく説明すると以下の様になります。

・メーラーはOutlook14(Office2010)

・添付ファイル名は固定ですが末尾の日付が変動
 (例)
 【****】○○日報20180814.xlsm

・宛先はToに30アドレス

・件名は固定ですが、日付部分が変動します。
 (例)
 【****】○○日報_8/14時点

・本文は定型文ですが、日付部分や本日の速報値が変動
 (例)
 -----------------------------------
 各位
 お疲れ様です。
 ****の進捗をご報告します。
 
 <2018/08/14時点>
 ■○○○○ [F10]件
 ■□□□□ [F11]件
 ■△△△△ [F12]件

 ※詳細は添付の資料をご確認ください。
 以上、よろしくお願いいたします。
 -----------------------------------
 [F10]とは添付エクセル、特定シート上のセル位置を指します。


UWSCでできたら良いと思っていますがVBAの方がずっと楽・・等なら検討します。
上記条件は現状こうやっているというだけなので必ず合わせる必要はありません。
自動化の都合に寄せる事は可能です。
(ファイルは事前にどこに置けば良いとか、日付の書式、ファイル名の規則とか)

不明点、説明不足な点あれば補足します。
詳しい方、よろしくお願いいたします。

質問者からの補足コメント

  • うれしい

    No.1への補足です。
    どうせエクセルVBA使うなら(マクロBook開くなら)、
    シート上に、セットしたい「宛先」「件名」「本文」「添付ファイルパス」「添付ファイル名」を記載できるようにすると良いので改修にチャレンジしてみます。

    このソースのままだと実際にエクセルのセルの値は代入されませんよね。
    実際に目的のファイルを開く処理は別途必要って事ですよね?

    No.1の回答に寄せられた補足コメントです。 補足日時:2018/08/16 17:30

A 回答 (2件)

> このソースのままだと実際にエクセルのセルの値は代入されませんよね。



件名や宛先の入ったシートのVBAとして作成すれば、Range("~").Valueで取得できるハズ。


別のブックやシートのVBAだったら、

> 実際に目的のファイルを開く処理は別途必要って事ですよね?

そういう事になるハズ。
    • good
    • 1
この回答へのお礼

いえ、私の言いたかったのはおそらくそうじゃなく、

最初に書いていただいたソース中に、

"■○○○○ " & Range("F10").Value & "件"

等がありますが、
これは、下記ファイルの中身を見に行ってはくれませんよね?
"【****】○○日報" & Format(Date, "yyyymmdd") & ".xlsm"

ソース中にはないが、自分でファイルをOpenする処理が必要なんですよね?
という意味でした。

お礼日時:2018/08/16 17:57

UWSCからOutlookを起動して操作するよりは、VBやVBAからメール送信のAPIを利用する方が簡単だと思います。


例えば、下記のサイトはExcelに入力した件名や宛先、添付ファイルの場所を元にメール送信する事例です。

パソコンスキルの教科書 - VBAでメールを自動送信!エクセルマクロでoutlook操作する方法|事例&コード付
http://www.fastclassinfo.com/entry/vba_outlook_s …

--
手元にExcel、Outlookが無いですがたぶん、

Dim outlookObj As Outlook.Application 'Outlookで使用するオブジェクト生成
Dim mailItemObj As Outlook.mailItem 'Outlookで使用するオブジェクト生成

Set outlookObj = CreateObject("Outlook.Application")
Set mailItemObj = outlookObj.CreateItem(olMailItem)
mailItemObj.BodyFormat = 3 'リッチテキストに変更
mailItemObj.To = "hoge1@hoge.com, hoge2@hoge.com, hoge3@hoge.com" 'to宛先をセット
mailItemObj.cc = "hoge4@hoge.com" 'cc宛先をセット
mailItemObj.BCC = "jibun@jibun.com" 'bcc宛先をセット
mailItemObj.subject = "【****】○○日報_" & Month(Date) & "/" & Day(Date) & "時点" '件名をセット
' 本文生成
mailItemObj.Body = "-----------------------------------" & vbCrLf
mailItemObj.Body = mailItemObj.Body & "各位" & vbCrLf
mailItemObj.Body = mailItemObj.Body & "お疲れ様です。" & vbCrLf
mailItemObj.Body = mailItemObj.Body & "****の進捗をご報告します。" & vbCrLf
mailItemObj.Body = mailItemObj.Body & vbCrLf
mailItemObj.Body = mailItemObj.Body & "<" & Date & "時点>" & vbCrLf
mailItemObj.Body = mailItemObj.Body & "■○○○○ " & Range("F10").Value & "件" & vbCrLf
mailItemObj.Body = mailItemObj.Body & "■□□□□ " & Range("F11").Value & "件" & vbCrLf
mailItemObj.Body = mailItemObj.Body & "■△△△△ " & Range("F12").Value & "件" & vbCrLf
mailItemObj.Body = mailItemObj.Body & "※詳細は添付の資料をご確認ください。" & vbCrLf
mailItemObj.Body = mailItemObj.Body & "以上、よろしくお願いいたします。" & vbCrLf
'
mailItemObj.Attatchments.Add "【****】○○日報" & Format(Date, "yyyymmdd") & ".xlsm" ' 添付

mailItemObj.Save '下書き保存
mailItemObj.Display 'メール表示

' 終了処理(するとOutlookが閉じる?
Set outlookObj = Nothing
Set mailItemObj = Nothing


> ※万が一の事故を防ぐため当面「送信」操作は人の手で行いたいです。

って事だと、下書きに保存して表示するとかが無難でしょうか。
この回答への補足あり
    • good
    • 0
この回答へのお礼

ありがとうございます。
参照設定など少し直したら(例)通りの動きをしました。
VBAでここまでできるのですね。
UWSCでこのVBA実行まで行えば連動して結果がでますね。
もう少し色々なアイデアを待ってみます。

お礼日時:2018/08/16 16:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!