VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Outlook

Microsoft OutlookはMicrosoft Officeの一部として組み込まれている、のユーザー管理とメーラーの機能を持ち合わせたソフトウェアです。

Q&A

解決済

1回答

3091閲覧

Outlookでメールをクリップボードに取得し、取得したメールのbody要素をExcelのセルに貼り付ける

Hoochie

総合スコア21

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Outlook

Microsoft OutlookはMicrosoft Officeの一部として組み込まれている、のユーザー管理とメーラーの機能を持ち合わせたソフトウェアです。

0グッド

0クリップ

投稿2022/03/02 16:40

Outlookでメールをクリップボードに取得し、取得したメールのbody要素をExcelのセルに貼り付けるマクロをVBAで組みたいです。
Outlookでメールアイテムを選んでCtrl+Cし、Excel VBAでPasteすると以下の要素が貼り付けられ、body要素が取得できませんでした。

引用テキスト差出人 件名 受信日時 サイズ
*@example.com Subject yyyy/mm/dd 0 KB

最低限達成したい仕様としては、以下の通りです。

  1. Outlookでメールアイテムをクリップボードに取得する
  2. Excelで、1で取得したメールアイテムのbody要素をセルにPasteするマクロを実行する
    上記を達成できるようなマクロをExcel VBAのみで組むことは可能でしょうか。
    また、可能であれば実装例を、不可能である場合はその理由をご教授いただけますと幸いです。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

1

ベストアンサー

クリップボードに格納されているデータについてはOutlookのオブジェクトモデルでアクセスできないので、クリップボードのアイテムのBodyプロパティを取得するということはできないでしょう。
わざわざクリップボードを経由する理由は何でしょうか?
たとえば、アイテム一覧で選択している複数のアイテムの本文をまとめてExcelに貼り付けということなら、以下のようなExcelマクロで可能と思いますが。

VBA

1Public Sub CopyBodyToExcel() 2 Dim olkApp 3 Dim msgItem 4 Dim iRow 5 Set olkApp = CreateObject("Outlook.Application") 6 iRow = 1 7 For Each msgItem In olkApp.ActiveExplorer.Selection 8 Sheet1.Cells(iRow, 1) = msgItem.Body 9 iRow = iRow + 1 10 Next 11End Sub

投稿2022/03/07 09:49

millefeuille

総合スコア226

Hoochie👍を押しています

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Hoochie

2022/03/13 13:42

回答ありがとうございます。 クリップボードを経由しなければOutlookのアイテムにアクセスできないという固定観念があったため、このようなとんちんかんな質問をしてしまいました。 Outlookのオブジェクトモデルという概念を認知していなかったので、クリップボードを経由しなければならないと思い込んでおりました。 頂いたコードの通りに実行したら希望通りに組むことができました。本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問