【问题标题】:Writeable active inline response in outlookOutlook 中的可写主动内联响应
【发布时间】:2018-10-06 07:33:36
【问题描述】:

我有一些博客中的以下代码,它将剪贴板中的 HTML 插入到 Outlook 电子邮件中。

Sub PrependClipboardHTML()
Dim email As Outlook.MailItem
Dim cBoard As DataObject

Set email = Application.ActiveInspector.CurrentItem
Set cBoard = New DataObject


cBoard.GetFromClipboard
email.HTMLBody = cBoard.GetText + email.HTMLBody

Set cBoard = Nothing
Set email = Nothing

End Sub

它工作得很好,除了电子邮件在它自己的窗口中(即弹出),否则它会失败。

我四处查看文档,发现Application.ActiveExplorer.ActiveInlineResponsehere

但是文档说它是只读的,实际上它不起作用。有没有办法获得内联响应的可写版本?

【问题讨论】:

    标签: vba outlook mailitem


    【解决方案1】:

    它很好用,只是电子邮件在它自己的窗口中(即弹出),否则它会失败。

    那是因为你在代码中有如下语句:

    Set email = Application.ActiveInspector.CurrentItem
    

    但是文档说它是只读的,实际上它不起作用。

    尝试使用以下代码:

    Set email = Application.ActiveExplorer.ActiveInlineResponse
    

    ActiveInlineResponse 属性是只读的,但不是您要使用的对象的属性。这意味着您不能将另一个邮件项设置为内联响应,但可以设置检索项的属性。

    【讨论】:

    • 感谢您的回答。我应该更清楚,但我已经用Set email = Application.ActiveExplorer.ActiveInlineResponse 尝试过了,它什么也没做。这就是我的意思,它不起作用。
    • 您可以获取EntryID 值并尝试通过调用NameSpace.GetItemFromID 来获取项目的新实例,您可以在其中设置正文。或者通过调用Display 方法将其显示在新的检查器窗口中。
    • 我错了。我的代码中有其他东西使ActiveInlineRespose 不起作用。它按你说的那样工作。
    • 好消息!谢谢你告诉我。
    【解决方案2】:

    也许您正在尝试使用 ActiveExplorer + Selection.Item Method (Outlook)

    例子

    Option Explicit
    Public Sub Example()    
        Dim email  As Outlook.MailItem
        Set email = Application.ActiveExplorer.Selection.Item(1)
            Debug.Print email.Subject ' print on immediate window    
    End Sub
    

    Or Work with both opened and selected items

    Function GetCurrentItem() As Object
        Dim objApp As Outlook.Application
    
        Set objApp = Application
    
        On Error Resume Next
        Select Case TypeName(objApp.ActiveWindow)
            Case "Explorer"
                Set GetCurrentItem = objApp.ActiveExplorer.Selection.Item(1)
            Case "Inspector"
                Set GetCurrentItem = objApp.ActiveInspector.CurrentItem
        End Select
    
        Set objApp = Nothing
    End Function
    

    【讨论】:

      【解决方案3】:

      您不能连接两个 HTML 字符串并期望返回一个有效的 HTML。两者必须合并。

      话虽如此,使用 Word 对象模型从剪贴板粘贴:

      Application.ActiveEXplorer.ActiveInlineResponseWordEditor.Application.Selection.Paste() 
      

      【讨论】:

      • 如何“合并”两个 HTML 字符串?
      • 取第一个 HTML 字符串中 <body></body> 标记之间的所有内容,将其插入第二个 HTML 字符串中的 <body> 标记之后。然后,您将需要从标题中复制样式等。这并不容易。让其他人完成这项工作 - 请在 Word 对象模型中使用 Selection.Paste
      猜你喜欢
      • 2013-08-03
      • 1970-01-01
      • 2017-07-04
      • 2023-03-05
      • 1970-01-01
      • 2013-07-06
      • 2013-11-20
      • 2020-09-14
      • 2013-06-22
      相关资源
      最近更新 更多