У меня есть пользовательская форма, которую пользователи будут использовать при получении определенного электронного письма.У меня есть 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 раздела кода ниже со следующими
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 () ниже.
- 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