outlook中可写的活动内联响应

时间:2018-04-25 18:09:38

标签: vba outlook outlook-vba mailitem

我从一些博客中获得以下代码,将剪贴板中的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.ActiveInlineResponse here

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

3 个答案:

答案 0 :(得分:1)

  

除了电子邮件位于自己的窗口(即弹出窗口)外,它的效果很好,否则会失败。

这是因为您在代码中有以下语句:

self.firstNameEntryView.textField.text?.append(firstName!)
  

然而,文件说它是只读的,实际上它不起作用。

尝试使用以下代码:

Set email = Application.ActiveInspector.CurrentItem

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

答案 1 :(得分:1)

也许您正在尝试使用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

答案 2 :(得分:0)

您无法连接两个HTML字符串并期望返回有效的HTML。这两者必须合并。

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

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