hogehogeプログラマ

PHPer。趣味ではServerless Frameworkをメインで触ってます

VBScriptでOutlookから本文を抽出してExcelに追記する

作ってみた

VBScriptを使ってちょっとしたツールを作成してみました github.com

概要

Outlookから件名が設定項目記載の条件に一致するメールを対象に
本文を抽出してExcelに追記するツールになります

使い方

  1. Githubからoutlook-to-excel.vbsをダウンロードする
  2. Excelファイルを新規作成する
  3. outlook-to-excel.vbsを開き抽出条件、出力先のExcelに応じて設定項目を修正する
  4. outlook-to-excel.vbsをダブルクリックする

ダブルクリックで実行後、正常終了するとExcelに追記しましたと表示されます

設定項目

設定は以下項目を設定可能です

正規表現については、条件に一致する括弧内の文字列が追記対象になります

動かしてみる

以下のようなメールが受信トレイにあったとします。

f:id:hogehoge0604:20180414014040p:plain このメール本文の■以降を抽出します。
件名と本文の抽出条件は以下のようにします

' 抽出対象の件名。設定した文字列が含まれるメールを対象とする
config.Add "pickup_title", "お問い合わせ"
' 本文抽出条件
config.Add "body_grep_rule", "■(.+)$"

outlook-to-excel.vbsを実行すると以下のような警告が出る場合がありますので許可を押してください
警告内容に不安がある場合はoutlook-to-excel.vbsのソースコードを確認したうえで
問題ないと判断できたら許可を押下いただければと思います

f:id:hogehoge0604:20180414014042p:plain

許可いただければoutlook-to-excel.vbsが実行され
Excelを開くと以下のように追加されていることが確認できます

f:id:hogehoge0604:20180414014045p:plain

VBScriptで〇〇を利用する

以下開発時に調べた内容になります

連想配列を利用する

Set dict = CreateObject("Scripting.Dictionary")

仕様は以下を参照
https://msdn.microsoft.com/ja-jp/library/cc428065.aspx

正規表現を利用する

Set reg = New RegExp
reg.Pattern = <抽出条件>
reg.Execute(<検索対象文字列>)

仕様は以下を参照
https://msdn.microsoft.com/ja-jp/library/cc392403.aspx

正規表現の仕様は以下を参照
https://msdn.microsoft.com/ja-jp/library/cc392437.aspx

Excelを利用する

Set excel = CreateObject("Excel.Application")
excel.Application.Workbooks.Open(<Excelファイルまでのパス>)

仕様は以下を参照
https://msdn.microsoft.com/ja-jp/library/office/ff198091.aspx

Outlookを利用する

Set Application = CreateObject("Outlook.Application")

仕様は以下を参照
https://msdn.microsoft.com/ja-jp/library/office/ff863377.aspx

メールから取得できるプロパティ値は以下を参照
https://msdn.microsoft.com/ja-jp/VBA/Outlook-VBA/articles/mailitem-object-outlook#%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3