You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Outlook VBA 如何将邮件正文中选中的文本内容复制到变量中

Outlook VBA 读取邮件正文选中文本的实现方法

可以实现将用户在邮件正文中选中的文本存储到变量中,你写的基础代码思路方向正确,但需要适配Outlook的对象模型逻辑:Outlook 顶层的Selection对象默认指向邮件列表、导航栏的选中条目,无法直接读取正文内的文本选区,需要通过邮件绑定的Word编辑器接口读取内容。

前置条件

  • Outlook 2010及以上版本默认使用Word作为邮件编辑器,无需额外配置即可使用以下代码
  • 代码支持两种使用场景:独立窗口打开的阅读/撰写邮件、主界面的预览窗格

独立邮件窗口的选中内容读取代码

Sub GetSelectedTextFromMailWindow()
    Dim objInspector As Outlook.Inspector
    Dim objMail As Outlook.MailItem
    Dim wordEditor As Object
    Dim selectedText As String

    ' 获取当前活动的独立邮件窗口
    Set objInspector = Application.ActiveInspector
    ' 校验窗口内打开的是否为邮件
    If objInspector.CurrentItem.Class = olMail Then
        Set objMail = objInspector.CurrentItem
        ' 获取邮件对应的Word编辑器对象
        Set wordEditor = objInspector.WordEditor
        If Not wordEditor Is Nothing Then
            ' 将选中的文本赋值给变量
            selectedText = wordEditor.Application.Selection.Text
            ' 后续自定义逻辑可在此处添加
            ' 示例:弹窗展示选中内容
            MsgBox "你选中的文本是:" & vbCrLf & selectedText
        End If
    End If

    ' 释放对象资源
    Set wordEditor = Nothing
    Set objMail = Nothing
    Set objInspector = Nothing
End Sub

预览窗格的选中内容读取代码

如果你是在主界面的预览窗格中选中文本,使用以下适配代码:

Sub GetSelectedTextFromReadingPane()
    Dim objExplorer As Outlook.Explorer
    Dim previewPaneEditor As Object
    Dim selectedText As String

    Set objExplorer = Application.ActiveExplorer
    ' 校验预览窗格是否已开启
    If objExplorer.IsPaneVisible(olPreview) = True Then
        Set previewPaneEditor = objExplorer.PreviewPane.WordEditor
        ' 将选中的文本赋值给变量
        selectedText = previewPaneEditor.Application.Selection.Text
        ' 后续自定义逻辑可在此处添加
    End If

    ' 释放对象资源
    Set previewPaneEditor = Nothing
    Set objExplorer = Nothing
End Sub

内容的提问来源于stack exchange,提问作者Jesper Martin Schumacher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 15:24:04