Как включить выбранное тело письма в пользовательскую форму Outlook 2010? - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть пользовательская форма, которую пользователи будут использовать при получении определенного электронного письма.У меня есть VBA, чтобы выбрать электронное письмо и переслать его, но я не могу понять, как включить перенаправленное электронное письмо в тело электронной почты пользовательской формы.


ОБНОВЛЕНИЕ: Для любой потерянной души, пытающейся это сделать, я нашел решение своей проблемы.

Sub CustomForm_IncludesSelectedEmailBody()

Dim myOlApp As Application
Dim myNameSpace As NameSpace
Dim myFolder As MAPIFolder
Dim myItems As Items
Dim myItem As Object
Dim origEmail As MailItem


Set origEmail = ActiveExplorer.Selection(1)
Set myOlApp = CreateObject("Outlook.Application")
Set myNameSpace = myOlApp.GetNamespace("MAPI")
Set myFolder = _
    myNameSpace.GetDefaultFolder(olFolderTasks)
Set myItems = myFolder.Items
Set myItem = myItems.Add("IPM.Note.DL_MALC_R_V1")
'the "IPM.Note.DL_MALC_R_V1" is the custom form's file name


myItem.HTMLBody = origEmail.Forward.HTMLBody
'this attaches the body of the email you're viewing to your new, forwarded email
myItem.Subject = origEmail.Forward.Subject
'This includes the selected email's subject line in your new email.
myItem.To = "emailYouWantToSendTo@example.com"
myItem.Display

Set myOlApp = Nothing
Set myNameSpace = Nothing
Set myFolder = Nothing
Set myItems = Nothing
Set myItem = Nothing
Set CustomForm = Nothing

End Sub

Для созданиякнопка для запуска VBA, это так же просто, как настроить ленту и выбрать макрос для запуска оттуда.

/ Конец Обновленный ответ


По сути то, что я хочубывает:

  1. Пользователь нажимает кнопку, которая загружает мою пользовательскую форму
  2. После нажатия кнопки на шаге 1 выбранное или просмотренное электронное письмо включается в тело электронного письма пользовательской формы.

Я думал, что я бы скомбинировал 2 раздела кода ниже со следующими

Sub Combined()
    RunMyForm
    Forward
    'gets the forwarded email in the Forward sub, but doesnt include the body of the forwarded email in the custom form.
End Sub

и что это сработает, но этого не происходит.Я очень новичок в VBA, поэтому я уверен, что что-то здесь не хватает.

Создание кнопки - не проблема, так как это легко сделать в самом Outlook.Я перечислил 2 раздела кода из Sub Combined () ниже.

  1. VBA, чтобы получить пользовательскую форму.
Sub RunMyForm()
  Dim myOlApp As Application
  Dim myNameSpace As NameSpace
  Dim myFolder As MAPIFolder
  Dim myItems As Items
  Dim myItem As Object

  Set myOlApp = CreateObject("Outlook.Application")
  Set myNameSpace = myOlApp.GetNamespace("MAPI")
  Set myFolder = _
    myNameSpace.GetDefaultFolder(olFolderTasks)
  Set myItems = myFolder.Items
  Set myItem = myItems.Add("IPM.Note.Test1")
  myItem.Display

  Set myOlApp = Nothing
  Set myNameSpace = Nothing
  Set myFolder = Nothing
  Set myItems = Nothing
  Set myItem = Nothing
End Sub
Выбор просматриваемого в данный момент элемента, его пересылка и пересылка на определенный адрес электронной почты.
Sub Forward()
'Combined with function GetcurrentItem, this forwards the selected email
    Dim fwd As Outlook.MailItem
    Dim itm As Object

    Set itm = GetCurrentItem()
    If Not itm Is Nothing Then
        Set fwd = itm.Forward
        fwd.Recipients.Add "email@exampleemail.com"
        fwd.Display
    End If

    Set fwd = Nothing
    Set itm = Nothing
End Sub
Function GetCurrentItem() As Object
    Dim objApp As Outlook.Application

    Set objApp = CreateObject("Outlook.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
        Case Else
            ' anything else will result in an error, which is
            ' why we have the error handler above
    End Select

    Set objApp = Nothing
End Function

1 Ответ

0 голосов
/ 18 марта 2019

(Публикация здесь, чтобы я мог пометить вопрос как ответ. Извините, я новичок в Stackoverflow.)

ОБНОВЛЕНИЕ: Для любой потерянной души, пытающейся это сделать, я нашелрешение моей проблемы.

Sub CustomForm_IncludesSelectedEmailBody()

Dim myOlApp As Application
Dim myNameSpace As NameSpace
Dim myFolder As MAPIFolder
Dim myItems As Items
Dim myItem As Object
Dim origEmail As MailItem


Set origEmail = ActiveExplorer.Selection(1)
Set myOlApp = CreateObject("Outlook.Application")
Set myNameSpace = myOlApp.GetNamespace("MAPI")
Set myFolder = _
    myNameSpace.GetDefaultFolder(olFolderTasks)
Set myItems = myFolder.Items
Set myItem = myItems.Add("IPM.Note.CustomForm1")
'the "IPM.Note.CustomForm1" is the custom form's file name


myItem.HTMLBody = origEmail.Forward.HTMLBody
'this attaches the body of the email you're viewing to your new, forwarded email
myItem.Subject = origEmail.Forward.Subject
'This includes the selected email's subject line in your new email.
myItem.To = "emailYouWantToSendTo@example.com"
myItem.Display

Set myOlApp = Nothing
Set myNameSpace = Nothing
Set myFolder = Nothing
Set myItems = Nothing
Set myItem = Nothing
Set CustomForm = Nothing

End Sub
...