Display command FIRST before asking for the signature. This VBA would work the same on an Excel spreadsheet by swapping out the reference to Word, replacing it with an Excel object. I'm programming a Submit button on a Word document to send it to support, and found the solution below delivers the signature. Signature.ApplyTo Msg, false 'apply at the bottom Set Signature = Account.NewMessageSignature Set Account = (2).Item(1) 'first mail account Set Drafts = Session.GetDefaultFolder(olFolderDrafts) set Session = CreateObject("Redemption.RDOSession") You can use its ApplyTo method to insert any signature into any message. If using Redemption (I am its author) is an option, it exposes the RDOSignature object. If you want to display the message anyway, display it first so that the signature is inserted by Outlook, and only then add your data (it needs to be inserted, not concatenated). You can also display the message (Outlook populates the unmodified message body with the signature when the message is displayed) and then either read the HTMLBody property and close the inspector (the flicker is unavoidable). You would also need to be careful with the signature styles and images - they must be processed separately. You can read the signature file from the Signatures folder (keep in mind that the folder name is localized) and merge it with the message body (you cannot simply concatenate two well formed HTML documents and get back a valid HTML document). You can also obtain the same simply expanding mymail object in the Locals Window! Try to place a brakepoint and look at ?mymail.HTMLbody values on Immediate Window (Ctrl + G) before and after the. Display method, the MailItem object is not "fully" created. I think it's a sort of VBA bug: if you don't use the. HTMLBody = Head & "Here the HTML text of your mail" & Signature Set myMail = myOutlook.CreateItem(olMailItem) Then you can simply put your HTML text between Head and Signature: Set myOutlook = CreateObject("Outlook.Application") Signature = Right(HTMLBody, Len(HTMLBody) - PosSignature + 1) PosSignature = InStr(PosBody, HTMLBody, pTag) ' Search for the position of the tag before signature ' - Trick to split HTMLBody into Head and Signature. ' MailItem need to be displayed to be "fully created" as object (maybe VBA bug) ' Trick to preserve Outlook default signature Set tempMail = myOutlook.CreateItem(olMailItem) I solved that issue with this trick: Set myOutlook = CreateObject("Outlook.Application") OUTLOOK CHANGE SIGNATURE CODEThat works, but obviously takes out the HTML formatting of the signatureĮdit 2: The code works on my friend's computer but not on mine Set myOlApp = CreateObject("Outlook.Application")Ĭode to show that signature is automatically inserted: Dim myOlApp As Outlook.ApplicationĮdit: I tried replacing. However the resulting email will be void of any signature.Ĭode to copy and re-insert the signature: Dim myOlApp As Outlook.Application HTMLBody to a signature (string), and then reassign it to. My simple attempt was to save the contents of. This can be seen if you try Outmail.Display. Once you tell VBA to create a new email, it will already contain your default signature. Everything so far is fine, except trying to keep my signature in the email. I am trying to automate some emails using VBA for Excel.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |