Outlook 2007 受信メールの本文(一部)をCSVに書き出す
- August 2nd, 2011
Outlook 2007 の受信メールで、本文の一部を集計しようと思ったので、Microsoft Visual Basicなるものを試してみたので、コードをメモしておきます。
とりあえず、以下のサイトを参考に四苦八苦してみる事に。
以下のようなメールからアンケートの結果を取り出してみる
[件名] ---------------
注文メール
[本文] ---------------
名前 山田太郎
性別 男性
アンケート Outlook 2007
商品 hogehoge
マクロの作成
メールの本文から、アンケート結果を取り出してCSVに書き込んでみる。
' シングルクォーテーションでコメントアウト ' Public の中にプログラムを書いていく Public Sub outputcsv() ' CSVファイルのパス(これは定数だな) Const CSV_PATH = "c:outlook_csvoutput.csv" ' (;)とかは不要みたい ' Dim が変数の宣言になるのかな? Dim objItem Dim objFSO Dim csvfile ' Set はオブジェクトを代入する時に使用するみたい Set csvfile = Nothing ' Dim は使用しなくていいみたい num = 0 ' オブジェクトを指定(ファイルの操作などをするオブジェクト) Set objFSO = CreateObject("Scripting.FileSystemObject") ' foreach 文(表示中の受信フォルダ内のアイテム全て) For Each objItem In ActiveExplorer.CurrentFolder.Items ' if 文(Thenってなに?、== じゃないの?) If objItem.Subject = "注文メール" Then ' objItem.Subject:件名 ' objItem.Body:本文 ' objItem.ReceivedTime:受信日時 ' 値定義 itemQA = getText("アンケート", objItem.Body) ' アンケート取得 itemDatetime = Format(objItem.ReceivedTime, "yyyy-mm-dd hh:nn:ss") ' 受信日時取得 ' 指定したファイルの読み書きが出来る ' 第1引数:ファイルパス ' 第2引数:入出力モード(1:読込、2:書込、8:追記) ' 第3引数:新規作成(True or False) ' 第4引数:文字コード(0:ASCII、-1:Unicode、2:システム規定値) Set csvfile = objFSO.OpenTextFile(CSV_PATH, 8, True, 0) If num = 0 Then ' CSVのフィールド名定義 csvfile.writeline "id,qa,datetime" End If num = num + 1 ' CSV値定義 csvfile.writeline num & "," & itemQA & "," & itemDateTime End If Next ' オブジェクトを閉じる? If Not csvfile Is Nothing Then csvfile.Close End If End Sub
getText()関数
指定した文字列の行末の文字列を取得する関数。
Private Function getText(strTarget As String, strBody As String) As String Dim leng_s As Long ' 指定文字の開始位置 Dim leng_e As Long ' 指定文字の終了位置 leng_s = InStr(strBody, strTarget) ' 本文から指定文字の位置を返す If leng_s > 0 Then leng_s = leng_s + Len(strTarget) ' 文字の開始位置に文字数を足す leng_e = InStr(leng_s, strBody, vbCrLf) ' 指定文字の末尾から改行文字までの位置を返す strAns = Trim(Mid(strBody, leng_s, leng_e - leng_s)) ' 指定の文字間を切り取り、空白文字を削除 ' 関数名が return の変わり? getText = Replace(strAns, vbTab, "") ' タブ文字を置換 Else getText = "" ' 指定文字が無ければ空文字を返す End If End Function
- August 2nd, 2011