人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Outlookのマクロを使って、受信したメールを自動で集計する方法を教えてください。
100人程度の人からメールを1時間ごとに来客の内訳(男女)をメールで送ってもらい、各時間ごとに集計する方法を模索しています。
件名には店の名前を記入し、本文には「X,Y」と記入させ(Xは男性の人数で、Yは女性の人数)、ワンクリックでCSVファイルに集計するようにしたいのですがなかなかうまくいかず、行き詰まっています。

参考となるサイトでなくても、マクロをそのまま書いていただいても結構です(むしろその方が嬉しいです)。
それではよろしくお願いします。

●質問者: Red-Comet
●カテゴリ:ビジネス・経営 コンピュータ
✍キーワード:100人 CSV Outlook クリック サイト
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● jccrh1
●60ポイント ベストアンサー

次の点を注意してプログラミングしてください。

1.店名は楽に集計するため、ハッシュ処理を使用しています。

→参照設定で「Microsoft Scripting Runtime」を指定してください。

2.フォルダー名(Set myFolderの命令)を必要なら変更してください。

3.csv出力先を指定してください。表示は\ですが半角の¥に修正してください。

4.フォルダーのすべてを集計していますが、受信日付で不要分は読み捨てることも必要だと思います。

5.店名、日時毎に集計しています。

6.Outlook2007で作成しました。2003なら多少変更が必要になるかも知れません。

Option Explicit

Sub 集計()

Const csv出力先 = "D:\集計データ.CSV"

Dim myOlapp As New Outlook.Application

Dim myNameSpace As Outlook.NameSpace

Dim myFolder As Outlook.Folder

Dim I As Integer

Dim 受信日時 As Date

Dim 件名 As String

Dim 内容 As String

Dim 店集計 As Scripting.Dictionary

Set 店集計 = New Scripting.Dictionary

Set myNameSpace = myOlapp.GetNamespace("MAPI")

Set myFolder = myNameSpace.Folders.Item("個人用フォルダ").Folders("受信トレイ")

With myFolder

For I = 1 To .Items.Count

件名 = .Items(I).Subject

受信日時 = .Items(I).ReceivedTime

内容 = Trim(.Items(I).Body)

件名 = 件名 + Format(受信日時, ",YYYY年MM月DD日 HH時MM分")

If 店集計.Exists(件名) Then

店集計.Item(件名) = Val(Split(店集計.Item(件名), ",")(0)) + Val(Split(内容, ",")(0)) & "," & _

Val(Split(店集計.Item(件名), ",")(1)) + Val(Split(内容, ",")(1))

Else

店集計.Add 件名, 内容

End If

Next I

End With

Open csv出力先 For Output As #1

For I = 0 To 店集計.Count - 1

Print #1, 店集計.Keys(I) & "," & 店集計.Item(店集計.Keys(I))

Next I

Close

End Sub

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ