• ベストアンサー

Outlookのメールをうまくエクスポートして・・・

例えばメール本文に <名前>  山田○○ <住所>  東京都○○・・・・ <TEL> 03-○○・・  という内容のものを100件分くらい効率よく 名前    住所        TEL 山田○○ 東京都○○・・・・  03-○○・・  田中○○ 神奈川県○・・・・  044-○○・・ といったエクセルデータとして出来ないものでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • tubumame
  • ベストアンサー率63% (7/11)
回答No.4

こんにちは。 Private Sub doResearch(ByRef parentFolder As MAPIFolder) Dim childFolder As MAPIFolder Dim curMail As MailItem Dim mailCount As Integer Dim folderCount As Integer For folderCount = 1 To parentFolder.Folders.Count Set childFolder = parentFolder.Folders.Item(folderCount) For mailCount = 1 To childFolder.Items.Count If TypeOf childFolder.Items.Item(mailCount) Is MailItem Then Set curMail = childFolder.Items.Item(mailCount) 'この部分を消してしまっています!! '↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ End If Next '↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 'この部分を消してしまっています!! If childFolder.Folders.Count <> 0 Then doResearch childFolder Next End Sub これでおそらく実行出来るようになるはずです。 しかし、実行したからといって何かが起こるわけではありません。一番最初の回答に書いたように、指定部分にメール本文の内容から<名前>,<住所>,<TEL>をさがして、それぞれの値を取得するようなロジックを記述しなければなりません。メール本文はurMail.BodyでStringとして取得できます。あとは単に文字列解析になります。

akazu11
質問者

お礼

すいませんありがとうございます。 マクロ勉強して出直してきます。

その他の回答 (3)

  • tubumame
  • ベストアンサー率63% (7/11)
回答No.3

こんにちは。 Outlookのセキュリティ設定が"高"に設定されているため、そのようなメッセージが表示されます。(悪意のあるマクロの実行を防ぐためです)ですから、セキュリティを"高"から"中"に変更してください。 てじゅんとしては、 1.メニューの"ツール"->"マクロ"->"セキュリティ"でセキュリティダイアログを表示します。 2.セキュリティレベルタブでセキュリティ設定を"高"から"中"に変更し、"OK"を押下します。 3.outlookを再起動します。 以上で、マクロ実行が可能になります。ただし、マクロを実行しようとするとセキュリティ警告ダイアログが表示されるので、"マクロを有効にする"を押下する必要があります。 (なかには、悪意を持ったマクロがありますが、ここで挙げたマクロは特に悪さをするわけではありません。安心してください。)

akazu11
質問者

補足

すいません。ど素人なので 今度は「Nextに対応するForがありません」と出てしまいました。 どうぞよろしくお願いします。

  • tubumame
  • ベストアンサー率63% (7/11)
回答No.2

>コンパイル、構文エラーが出てしまうのですが・・・・ エラーだとエラー箇所が赤くなっているとおもうのですが、どこですかね? public sub format() ...... end sub ----------------------------- ← この線も一緒にコピーしてませんか? private sub doResearch(... ...... end sub

akazu11
質問者

補足

Public Sub Format() Dim personalFolder As MAPIFolder Dim appNameSpace As NameSpace Set appNameSpace = Application.GetNamespace("MAPI") Set personalFolder = appNameSpace.Folders.Item(1) doResearch personalFolder End Sub Private Sub doResearch(ByRef parentFolder As MAPIFolder) Dim childFolder As MAPIFolder Dim curMail As MailItem Dim mailCount As Integer Dim folderCount As Integer For folderCount = 1 To parentFolder.Folders.Count Set childFolder = parentFolder.Folders.Item(folderCount) For mailCount = 1 To childFolder.Items.Count If TypeOf childFolder.Items.Item(mailCount) Is MailItem Then Set curMail = childFolder.Items.Item(mailCount) If childFolder.Folders.Count <> 0 Then doResearch childFolder Next End Sub で実行したところ、 「このプロジェクトのマクロは無効に設定されています。マクロを有効にする方法についてはオンラインヘルプまたはホストアプリケーションのドキュメントを参照してください。」 とでました・・・・

  • tubumame
  • ベストアンサー率63% (7/11)
回答No.1

こんにちは。 outlookのマクロでできるのではないでしょうか?以下に例を挙げます。 Public Sub Format() Dim personalFolder As MAPIFolder Dim appNameSpace As NameSpace 'ルートフォルダの取得 Set appNameSpace = Application.GetNamespace("MAPI") Set personalFolder = appNameSpace.Folders.Item(1) doResearch personalFolder End Sub ------------------------------------------------- Private Sub doResearch(ByRef parentFolder As MAPIFolder) Dim childFolder As MAPIFolder Dim curMail As mailItem Dim mailCount As Integer Dim folderCount As Integer 'ルートフォルダ配下のフォルダ件数分ループ For folderCount = 1 To parentFolder.Folders.Count 'フォルダ一覧からfolderCount件目のフォルダを取得 Set childFolder = parentFolder.Folders.Item(folderCount) '現在のフォルダに存在するメールの件数分ループ For mailCount = 1 To childFolder.Items.Count '現在のフォルダのmailCount件目のメールのタイプをチェック '普通のメールの場合はMailItemだが、開封通知などはMailItemでは無いため 'のチェック。 If TypeOf childFolder.Items.Item(mailCount) Is mailItem Then '現在のフォルダからmailCount件目のメール取得 Set curMail = childFolder.Items.Item(mailCount) 'mailCount件目のメールの本文を取得(curMail.Body)し '内容を解析して、ファイルに保存するロジック 'をここに書く '件名(curMail.Subject)が~のメールのみとか、 '送信者(curMail.SenderEmailAddress)が~のメール 'などのフィルタをかけることも可能 End If Next '現在のディレクトリが子ディレクトリを持っていれば '自分自身を呼び出す。(再帰呼び出し) If childFolder.Folders.Count <> 0 Then doResearch childFolder Next End Sub マクロの実行でFormatを選び実行すれば、全てのメールフォルダ配下の全てのメールの本文をチェックすることが出来ます。(akazu11さんの質問からは、よみとることは出来ませんが、おそらく処理をしたいメールはある決まりがあって[件名が~のメールとか送信者が~のメール..etc]メールの仕訳ルール作成で対象メールのみ特定のフォルダに仕分けていらっしゃると思うので、全てのフォルダを対象にしなくてもいいとはおもうのですが...) 説明が下手で申し訳ございませんが、参考になれば幸いです。

akazu11
質問者

補足

すいません、マクロが良く分からず「End Sub」までコピペして行ったのですが、コンパイル、構文エラーが出てしまうのですが・・・・

関連するQ&A