Microsoft Exchange office365 outlookを社内ネットワーク環境下でメールの送受信などをおこなっています。
背景
ExcelVBAを使って、outlookメール受信情報をExcelに出力するVBAを作成し試しているのですが
受信日とメールの題名は取り込めるのですがしか、肝心の送信者とメール全文を取り込むことが出来ません。
原因はおそらく社内ネットワーク環境下での使用かと推測するのですが、対処方法がわからず困ってしまいました。
要望
Microsoft Exchange office365 outlookのメール受信情報を
Excelに出力(送信者とメール全文)するVBAコード問題の対策方法を教えてください。
Sub Outlook_mail_list() '''---コード1|このコード内で使用する変数を宣言 Dim InboxFolder, i, n, k, attno As Long Dim sender, mes, path1 As String Dim outlookObj As Outlook.Application Dim myNameSpace, objmailItem As Object Dim fso 'As FileSystemObject '''---コード2|定義した変数に必要な項目をセット Set outlookObj = CreateObject("Outlook.Application") Set myNameSpace = outlookObj.GetNamespace("MAPI") Set InboxFolder = myNameSpace.GetDefaultFolder(6) n = 2 '''---コード3|メールの添付ファイルを保管するフォルダを作成 mes = InputBox("メールの添付資料を保管用フォルダを新しく作成します。フォルダ名を入力してください") path1 = ThisWorkbook.Path & "\" & mes Set fso = CreateObject("Scripting.FileSystemObject") fso.CreateFolder (path1) '''---コード4|解析する受信メールの範囲を決める MsgBox InboxFolder.Items.Count For i = 1 To InboxFolder.Items.Count Set objmailItem = InboxFolder.Items(i) '''---コード5|受信メールの件数、受信日時、件名(タイトル)、送信者名、送信元のメールアドレス、内容(本文)を取得 Range("A" & n).Value = i Range("B" & n).Value = objmailItem.ReceivedTime Range("C" & n).Value = objmailItem.Subject 'Range("D" & n).Value = objmailItem.SenderName 'Range("E" & n).Value = objmailItem.SenderEmailAddress 'Range("F" & n).Value = Left(objmailItem.Body, 100) コード
質問者様。コメントにされている
Range("F" & n).Value = Left(objmailItem.Body, 100)
ここで本文が取得できていないのですか?
それとも「意味不明の文字列」が取得されているのですか?
起こっている現象は何でしょうか?
Body等のプロパティが空?
> 原因はおそらく社内ネットワーク環境下での使用かと推測するのですが、
社外の環境では問題なかったということで良いでしょうか?
エラーの内容ですが、SenderNameが取得できない様子でコードが止まってしまいます。
社外環境での使用ができないため確認はできておらず、社内ネットワーク環境下でエラーが出てきます。 ただ他の方がこのvbaコードを試された結果は問題なく読み込みできるそうです。
> コードが止まってしまいます。
空が取れるのでなく、エラーでプログラムが途中で終了してしまうと言うことであれば、エラーメッセージを載せましょう。
回答2件
あなたの回答
tips
プレビュー