開いているOutlookで、メール本文がアクティブになっている状態で、
その本文をVBAで取得したいです。
できれば、httpから始まるURL文字列のみ取得したいです。
outlookの起動や、参照設定まではうまくいったのですが、
どこのサイトを探してもエクセルをメール本文にペースト等のVBAばかりで、
逆が見つかりませんでした。
何卒、ご教示いただけないでしょうか。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
![guest](/img/icon/icnUserSample.jpg)
回答2件
0
ベストアンサー
メール本文がアクティブになっている状態
が実際どんな状態を想定しているのかわかりませんが、特定の一つのメールを単独のウィンドウで開いている状態だと想定します。
この時のウィンドウは、Outlook.Inspector
オブジェクトです。
対して、「受信トレイ」などの画面はOutlook.Explorer
オブジェクトです。
Inspector.CurrentItem から実際に開いているアイテム(メールならOutlook.MailItem
)を取得できますが、
今回は
httpから始まるURL文字列のみ取得したいです。
との事なので、MailItem よりは Inspector 経由で Word の機能を使った方が簡単な気もします。
vba
1Private Sub Q180794() 2'https://teratail.com/questions/180794 3 4 Dim appOl As Outlook.Application 5 Set appOl = VBA.GetObject(, "Outlook.Application") 6 7 'Inspector は何らかのアイテム単独を表示した状態のウィンドウ。 8 Dim insp As Outlook.Inspector 9 Set insp = appOl.ActiveInspector() 10 11 'メールオブジェクトの取得。メール以外のものを開いている可能性があるため判定は必須。 12 Dim m As Outlook.MailItem 13 If insp.CurrentItem.Class = Outlook.OlObjectClass.olMail Then 14 Set m = insp.CurrentItem 15 End If 16 17 18 'Inspector 内の本文の表示は Word の機能をベースにしている。 19 Dim mailDoc As Word.Document 20 Set mailDoc = insp.WordEditor 21 22 Dim mailBody As Word.Range 23 Set mailBody = mailDoc.Content 24 25 VBA.MsgBox mailBody.Text 26 27 'Hint 28 Dim hLinks As Word.Hyperlinks 29 Set hLinks = mailBody.Hyperlinks 30 31 Stop 'break point. 32 33End Sub
投稿2019/03/22 14:52
総合スコア2166
0
探す場所は、microsoft.com です。
このあたりを読むと良いでしょう。
Visual Basic for Applications (VBA) の Outlook オブジェクトモデル | Microsoft Docs
投稿2019/03/22 14:11
総合スコア86080
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
![guest](/img/icon/icnUserSample.jpg)
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/22 15:04
2019/03/22 15:09
2019/03/22 15:17
2019/03/22 15:20
2019/03/22 15:21