2017-10-04 5 views
1

Ich habe nicht bemerkt, manuell Weiterleiten einer E-Mail mit Outlook (2016) vorwärts Schaltfläche gibt mir ein anderes Ergebnis, wenn ich ein Makro verwenden um es weiterzuleiten. Hier ist mein Makro:Unterschiede zwischen, wenn wir manuell weiterleiten und e-Mail, wenn wir ein Makro verwenden, um eine E-Mail in Outlook weiterzuleiten

Sub W() 

Dim helpdeskaddress As String 
Dim objMail As Outlook.MailItem 
Dim strbody As String 
Dim oldmsg As String 
Dim senderaddress As String 
Dim addresstype As Integer 

' Set this variable as your helpdesk e-mail address 
helpdeskaddress = "[email protected]" 

Set objItem = GetCurrentItem() 
Set objMail = objItem.Forward 

' Sender E=mail Address 
senderaddress = objItem.SenderEmailAddress 

'Searches for @ in the email address to determine if it is an exchange user 
addresstype = InStr(senderaddress, "@") 

' If the address is an Exchange DN use the Senders Name 
If addresstype = 0 Then 
senderaddress = objItem.SenderName 
End If 

'adds the senders e-mail address as the created by object for the ticket and appends the message body 
strbody = "#created by " & senderaddress & vbNewLine & vbNewLine & objItem.Body 

objMail.To = "[email protected]" 
objMail.Subject = objItem.Subject 
objMail.Body = strbody 

' remove the comment from below to display the message before sending 
'objMail.Display 

'Automatically Send the ticket 
objMail.Send 
MsgBox ("The email has been sent for verification. You may receive a report in a few moments.") 

Set objItem = Nothing 
Set objMail = Nothing 
End Sub 

und eine Funktion, um die aktuellen E-Mail-Objekt Artikel zu erhalten:

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 
    Case Else 
End Select 
End Function 

Wenn ich eine E-Mail weiterleiten, ich kann alle Bilder sehen (in Verbindung mit einer anderen Website im Internet) Ich weiterleiten, aber wenn ich das folgende Makro verwende, sehe ich nur den Text in der E-Mail. Gibt es trotzdem, kann ich das folgende Makro machen, um den ähnlichen Job zu machen, wie das manuelle Weiterleiten tut?

+0

Es gibt eine Reihe von gelben Flaggen in diesem Code ist 'Option Explicit' angegeben? [Rubberduck] (http://rubberduckvba.com) (ein Open-Source-VBIDE-Add-In-Projekt, das ich verwalte), sieht keine Deklaration für "objItem", und weder "oldmsg" noch "helpdeskaddress" werden verwendet (trotz 'helpdeskaddress ') 'zugewiesen werden). Auch wenn "GetCurrentItem" alle ausgewählten Elemente * (z. B. in einem 'Variant/Array') zurückgibt und der Aufrufer sie wiederholt, würde Ihr Makro mit * allen * ausgewählten Elementen arbeiten, anstatt nur mit dem ersten. –

Antwort

1

den ursprünglichen Inhalt, nutzen HTMLBody statt Body:

strbody = "HTML-encoded content" 

objMail.HTMLBody = strbody & objMail.HTMLBody 

HTML-Beispiel Format specific text in Outlook

+0

Sie können und sollten nicht zwei HTML-Strings verketten - es kann nicht zu einer gültigen HTML-Zeichenfolge führen. Die beiden müssen zusammengeführt werden. –

Verwandte Themen