Записываемый активный встроенный ответ в outlook - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть следующий код из какого-то блога, который вставляет 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 здесь .

Однако в документации сказано, что она доступна только для чтения и действительно не работает.Есть ли способ получить доступную для записи версию встроенного ответа?

Ответы [ 3 ]

0 голосов
/ 25 апреля 2018

Вы не можете объединить две строки HTML и ожидать верный HTML обратно.Два должны быть объединены.

При этом используйте Word Object Model для вставки из буфера обмена:

Application.ActiveEXplorer.ActiveInlineResponseWordEditor.Application.Selection.Paste() 
0 голосов
/ 25 апреля 2018

Возможно, вы пытаетесь работать с 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

Или работа как с открытыми, так и с выбранными элементами

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
0 голосов
/ 25 апреля 2018

Это прекрасно работает, за исключением того, что электронное письмо было в своем собственном окне (то есть выскочило), иначе это не удастся.

Это потому, что в коде есть следующее утверждение:

Set email = Application.ActiveInspector.CurrentItem

Однако в документации сказано, что она доступна только для чтения и действительно не работает.

Попробуйте использовать следующий код:

Set email = Application.ActiveExplorer.ActiveInlineResponse

Свойство ActiveInlineResponse доступно только для чтения, но не для свойств объекта, которые вы собираетесь использовать. Это означает, что вы не можете установить другой почтовый элемент для встроенного ответа, но сможете настроить свойства полученного элемента.

...