
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
どのあたりの解説をお望みでしょうか。
フォルダ内のメールを扱う方法でしょうか、メールから情報を抽出するところでしょうか。
フォルダがOutlookのフォルダではなくデスクトップつまりWindowsのファイルシステムのフォルダなので、そのあたりがよくわからないということでしょうか。
とりあえずはそこのところを解説します。
デスクトップのフォルダの中のメールということは、拡張子が.msgのファイルですね。
これをOutlook VBAで開く方法を調べてみたのですが、意外な事にVBAで.msgファイルを開く素直な方法はなさそうで、複数の情報があった方法は以下の2つでした。
1.CreateItemFromTemplate メソッドを使う方法
Outlook.ApplicationのCreateItemFromTemplate メソッドを使います。
この方法はメールを開くのではなく、メールをひな形として新しいメールを作るものです。
そのため、元のファイルに書き戻すことはできませんし、一部取り出せない情報もあるようです。しかし今回の用途にはこれが適していると思われます。
2.Shellから.msgファイルを開く方法
VBAのShell関数などを使ってOUTLOOK.EXEを/fと.msgファイルの2つの引数を与えて実行する方法です。(.msgファイル単体で開く方法もあります)
変更内容を書き戻すならこの方法しかないと思いますが、開いただけではMailItemオブジェクトは得られず、VBAで編集ウィンドウ (Inspector) を探さなければならないので、手順が煩雑なうえ不安定になる可能性があります。今回は書き戻す必要はないと思いますので不採用とします。
以下、デスクトップの"MSGS"というフォルダに.msgファイルが入っているとして、ファイルから受信日時を抽出してアクティブなワークシートのA列に出力するExcel VBAのサンプルコードを示します。
簡単のため、ファイルはすべて.msgファイルであるとし、本文や件名からの情報抽出は省略します。
Sub Sample1()
Dim oOL As Object, MI As Object
Dim oWShell As Object, oFSO As Object
Dim mFs As String
Dim RowAdr As Long
Dim e As Variant
Set oOL = CreateObject("Outlook.Application")
Set oWShell = CreateObject("WScript.Shell")
Set oFSO = CreateObject("Scripting.FileSystemObject")
mFs = oWShell.SpecialFolders("Desktop") & "\MSGS"
RowAdr = 1
For Each e In oFSO.getfolder(mFs).Files
Set MI = oOL.CreateItemFromTemplate(e.Path)
Cells(RowAdr, 1) = MI.ReceivedTime
RowAdr = RowAdr + 1
MI.Close 1 'olDiscard
Next
End Sub
ところで、フォルダはデスクトップ上ではなくOutlookのフォルダにしてはいかがでしょうか。もしOutlookのフォルダにすればVBAがもう少し簡単になります。
抜き出したメールが"個人用フォルダ"のサブフォルダ"MSGS"にあるとして例を示します。
Sub Sample2()
Dim oOL As Object, NS As Object
Dim ExFolder As Object
Dim RowAdr As Long
Dim e As Variant
Set oOL = CreateObject("Outlook.Application")
Set NS = oOL.GetNamespace("MAPI")
Set ExFolder = NS.Folders("個人用フォルダ").Folders("MSGS")
RowAdr = 1
For Each e In ExFolder.Items
Cells(RowAdr, 1) = e.ReceivedTime
RowAdr = RowAdr + 1
Next
End Sub
動作確認はOffice2007, WindowsXPで行いましたが、おそらくOffice2010でも大丈夫だと思います。
疑問点や他の部分の解説希望等ありましたら補足ください。
回答ありがとうございます上記のとおり、Windowsのファイルシステムのフォルダから抽出方法がベストですが、調べても出てきませんでした。フォルダからの理由としてOutlookのフォルダから毎日読み込むため抽出データが重複してしまうと思っていたからです。フォルダ指定が出来るのであれば上記のマクロを利用して再度挑戦してみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) VBA メール送信済で実行されるはずが、実行されない時があります。 2 2023/02/02 14:05
- その他(Microsoft Office) Outlookメール 連絡先の検索について 〈 ご説明 〉 Windows PC の Outlook 1 2022/09/23 14:43
- Visual Basic(VBA) VBAで、1つのエクセルで、2つのシートからもう1つのシートに条件のある転記コードを教えてください。 1 2023/03/16 18:07
- Visual Basic(VBA) Outlook VBAについて 1 2023/07/10 12:41
- Access(アクセス) Accessで予定表を作成しようとしてます。 テーブル フィールド名 連番 オートナンバー型 年月日 2 2023/07/23 11:40
- 会社・職場 ある時、 会社で見積書の依頼を メールで対応してる時の出来事。 見積書な項目8行目の文言が 長すぎる 2 2023/06/10 03:12
- Outlook(アウトルック) outlookの送信エラーについて 1 2022/05/13 12:04
- Visual Basic(VBA) Excel VBA キーワードから列を取得して、さらに空欄行を非表示にする 3 2022/10/21 22:49
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォルダは残してファイルだけ...
-
windows11におけるファイルの並...
-
勝手にフォルダが作成されます...
-
SDカード内にたくさんの文字化...
-
フォルダの中身を指す場合、な...
-
apple script の記録
-
フォルダ内のファイル移動が出...
-
フォルダやファイルの最終アク...
-
パーフェクトビューワー SDカ...
-
複数フォルダのファイルを1つ...
-
フォルダ内の順番
-
DVD+RWに新しいフォルダをいく...
-
Google ドライブ ってフォルダ...
-
多重に入れ子になっているフォ...
-
Mac特有のフォルダ類
-
DropBox内の移動を禁止にする方...
-
重要フォルダを移動できないよ...
-
USBメモリーの中のいらないファ...
-
共有したらフォルダが 0KBのフ...
-
OS Xのライブラリ等について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォルダは残してファイルだけ...
-
windows11におけるファイルの並...
-
勝手にフォルダが作成されます...
-
フォルダの中身を指す場合、な...
-
複数フォルダのファイルを1つ...
-
Google ドライブ ってフォルダ...
-
SDカード内にたくさんの文字化...
-
エクセルVBA:毎月名前が変わる...
-
パーフェクトビューワー SDカ...
-
iTunesのbackupファイルが複数...
-
VBA、フォルダのパスに環境文字...
-
C:\\Logs このフォルダは何で...
-
フォルダ内のファイル移動が出...
-
フォルダ内の順番
-
USBメモリーの中のいらないファ...
-
フォルダだけ削除する方法あり...
-
多重に入れ子になっているフォ...
-
ZIPフォルダの中身をCDに焼く
-
cドライブのフォルダについて
-
tempフォルダの異常増殖
おすすめ情報