タカヒロ@extanVBAでOutlookメール本文の情報をExcelに取り込む方法https://extan.jp/wp-admin/post.php?post=7442&action=editVBAでOutlookメール本文の情報をExcelに取り込みたいときはないでしょうか。・VBAでOutlookメール本文の情報をExcelに取り込みたいが方法がわからない。・VBAでOutlookメール本文の情報を書式設定やリンク情報を含む形でExcelに取り込みたいが方法がわからない。VBAからOutlookを操作するための下準備Excel側へVBAを実装するVBAを実行するさいごにVBAでOutlookメール本文の情報をExcelに取り込むイメージVBAでOutlookメール本文の情報をExcelに取り込むイメージについて説明をします。Outlook側の受信トレイにあるメールを確認します。取得したい期間を指定し、Excel側へVBAを実装、マクロを実行すると、Excel側に受信トレイにあるメール一覧情報が取り込まれます!さらにリンク情報や書式情報をふくめることができるHTML形式で本文の情報が取得できます。それでは早速やってみましょう!Outlookメール本文の情報をExcelに取り込むVBA本文抽出対象のメールを確認Outlook側の受信トレイにあるメールの中で本文を取得したいメール本文の内容や受信日などを確認します。VBAの準備Outlookメール本文の情報をExcelに取り込むVBAの実装方法について説明をします。今回のサンプルコードは以下の通りです。'取得結果を記述する行番号を指定します。2の場合、2行目のセルから開始されることになります。'抽出期間の開始日と終了日を指定します。'スピードアップのためスクリーンの更新を無効にします。'Excelのブックとワークシートのオブジェクトを設定します。'書き込み先のセルを指定し1行目にタイトルを入力します。'Outlookオブジェクトを設定し、MAPI名前空間を介してOutlookの連絡先一覧を取得します。'既定ユーザーの受信トレイを対象にオブジェクトを取得します。'Restrictメソッドで期間を指定し抽出するメールアイテムを絞り込みます。'アイテムのタイプが"MailItem"だった場合のみ値を取得します。※それ以外のタイプの場合はプロパティの構成が異なるためエラーとなります。'オブジェクトを解放します。'スクリーンの更新を有効にします。SubVBAの設定VBAの設定箇所は以下の通りです。抽出期間の開始日と終了日を指定します。取得結果を記述する行番号を指定します。2の場合、2行目のセルから開始されることになります。「VBAの実装手順」をご参照ください。VBAの実行VBAを実行してみましょう。「Outlook受信メールの取り込みが完了しました!」と表示されたら完了です。Excelシートを見てみましょう。はい、受信メール本文がExcelに取り込まれていますね!VBAの説明Excelのブックとワークシートのオブジェクトを設定します。wbBook.Worksheets(1)書き込み先のセルを指定し1行目にタイトルを入力します。""Attachments""書式を追加します。WithOutlookオブジェクトを設定し、MAPI名前空間を介してOutlookの連絡先一覧を取得します。olApp.GetNamespace(""MAPI"")既定ユーザーの受信トレイを対象にオブジェクトを取得します。olFolder.ItemsRestrictメソッドで期間を指定し抽出するメールアイテムを絞り込みます。ReceivedTime(受信日)を基準にしています。""'"")アイテムのタイプが””MailItem””だった場合のみ値を取得します。※それ以外のタイプの場合はプロパティの構成が異なるためエラーとなります。With各プロパティの内容については以下の通りです。EntryID(メールアイテム固有ID)Outlookメール本文の情報をHTML形式でExcelに取り込むVBA次にOutlookメール本文の情報をHTML形式でExcelに取り込んでみましょう。以下の変更を行います。本文のBodyプロパティからHTMLBodyプロパティへ変更します。HTML形式の本文VBAを実行Outlookメール本文の情報をHTML形式でExcel側へ出力されているか確認をしてみましょう。VBAからOutlookを操作するための下準備をしていきます。1Excelを起動し、「開発」タブをクリックします。2VBEの画面が開いたら、メニューから「ツール」>「参照設定」を選択します。Library」を探してチェックボックスにチェックし「OK」をクリックします。Excel側へVBAを実装するExcel側にVBAを実装していきます。1Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。ショートカットキー「Alt」+「F11」でもOKです。2標準モジュールを追加します。モジュール」を選択します。3右ペインのウインドウに上記のマクロを入力します。こちらで実装完了です。VBAを実行するVBAを実行する手順となります。1「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。2処理がされたことが確認できれば完了です。さいごにいかがでしょうか。・VBAでOutlookメール本文の情報をHTML形式でExcelに取り込む方法についてまとめました。他にも便利な方法がありますので、よろしければご参照頂ければと思います。この記事の関連キーワードこちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。メール「メール」の関連記事こちらの記事の内容「メール」に関連する記事一覧です。いつも参考にさせていただいています。このページにある「Outlookメール本文の情報をExcelに取り込むVBA」に似たVBAを自作しており、2点アドバイスを頂けますでしょうか。★1このページのVBAでは、ExcelのThisWorkbookに転記していますが、特定のExcelファイルを開いてそこに転記させたいと思っています。特定のExcelファイルを開くことはできるのですが、すでに開いた状態でVBAを起動させると読み取り専用になってしまいます。そこで、特定のファイルが開いていればそれをアクティベートさせ、開いていなければ新たに開くようにしたいのですが、どう改良したらよいか教えてください。★2Excelがアクティブな状態になっていますが、最後Outlookをアクティブにして終了したいので、outlookに戻る方法を教えてください。‘操作対象Excelファイルのフルパスを指定する。‘Excelオブジェクトを作成する。ここでstrFilePathが開いていれば、それをアクティブにする。‘Excelブックを開き情報を取得する。‘Excelシートの情報を取得する。‘最終行+1行(入力行)を取得する。objItem_3‘Excelブックを上書き保存ExcelWB.Save’★2ここでOutlookに戻りたい。Excelは開いたままでOK。AMいつもご利用ありがとうございます。一つ目のExcelブックが既に開かれているかどうかの判定ですが、Workbooksオブジェクトを使えばできるかと思います。以下のようにチェック関数として独立させIF文の条件に設定させるとよいでしょう。後の処理は考えていれてみてください。Function2点目のOutlookに戻る方法については以下でいけるかと思います。objItem.Displayよろしくお願いいたします。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。VBAエラー:ユーザー定義型は定義されていません。VBA】配列を宣言する方法!動的配列や二次元配列も!【VBA】Outlook会議通知の重要度を設定する方法!RECOMMENDこちらの記事も人気です。VBA】転送メールを作成する方法!宛先追加や件名・本文追記も!2023.2.1VBAエラー:ユーザー定義型は定義されていません。