Macro generating email using default signature and hyperlink

Status
Not open for further replies.

Jerry D

New Member
Outlook version
Outlook 2010 32 bit
Email Account
IMAP
Hi AllI have been working on a macro to generate a weekly set of emails I send out.

When I use the code below that I pieced together to insert my default signature, it works great until I add body text. Then the signature disappears.

Additionally, I am linking to a file on the server and am trying to figure out how to do so without the link being preceeded by "file:"

If I don't include it, the link is not clickable. When I try using <a href> tags, they simply show up in the text as plain text as well.

Sub MailFriday(dteDate As Date)
Dim OlApp As Outlook.Application
Dim ObjMail As Outlook.MailItem

Dim BodyHtml As String
Dim DirSig As String
Dim FileNameHTMSig As String
Dim Pos1 As Long
Dim Pos2 As Long
Dim SigHtm As String

DirSig = "C:\Users\" & Environ("username") & _
"\AppData\Roaming\Microsoft\Signatures"
FileNameHTMSig = Dir$(DirSig & "\*.htm")
' Code to handle there being no htm signature or there being more than one
SigHtm = GetBoiler(DirSig & "\" & FileNameHTMSig)
Pos1 = InStr(1, LCase(SigHtm), "<body")
' Code to handle there being no body
Pos2 = InStr(Pos1, LCase(SigHtm), ">")
' Code to handle there being no closing > for the body element
BodyHtml = "<table border=0 width=""100%"" style="" Color: #0000FF""" & _
" bgColor=#F0F0F0><tr><td align= ""center"">HTML table</td>" & _
"</tr></table><br>"
BodyHtml = Mid(SigHtm, 1, Pos2 + 1) & BodyHtml & Mid(SigHtm, Pos2 + 2)
Set OlApp = Outlook.Application
Set ObjMail = OlApp.CreateItem(olMailItem)
ObjMail.BodyFormat = olFormatHTML
ObjMail.Subject = "Appointments for " & _
Format(dteDate, "m/dd")
ObjMail.Body = "Hi All " & _
"—" & vbCrLf & "Following are the links to the Schedule Reports for the week of " & _
Format(dteDate, "m/dd") & _
":" & vbCrLf & vbCrLf & " file:\\corp\public\D\S-1-5-21-39997874\Crew%20and%20Sched%20Reports\All Boroughs" & _
"" & vbCrLf & vbCrLf & " Thanks,"


ObjMail.Recipients.Add "my@email.com"
ObjMail.Display

End Sub
 

Diane Poremsky

Senior Member
Outlook version
Outlook 2016 32 bit
Email Account
Office 365 Exchange
This is easy:
When I use the code below that I pieced together to insert my default signature, it works great until I add body text. Then the signature disappears.

When you add the body text you are replacing the entire body with
ObjMail.Body = <snip>

you can use word's insertbefore to insert it - something like this will put the text at the top
Code:
Dim olInspector As Outlook.Inspector 
Dim olDocument As Word.Document 
Dim olSelection As Word.Selection 
 
Set olInspector = Application.ActiveInspector() 
Set olDocument = olInspector.WordEditor 
Set olSelection = olDocument.Application.Selection 
 
olSelection.InsertBefore "your text"

Or something like
objmail.body = "my new text" & vbcrlf & objmail.body

I don't know if it will be easier since you already have the html code in the vba, but you can create a template and call it. You might be able to use the date field feature to auto update (it doesn't work in all tempates and i forget if it works in mail).

The problem with the link is because you are putting it into an html document as plain text.

Something like this should work (and assumes you are using the code to insertbefore - if not, you need the dim's and set's to setup word)

strlink is dimmed as a string and is your url.
Code:
        olDocument.Hyperlinks.Add olSelection.Range, strLink, _ 
                              "", "", strLinkText, "" 
    Else 
        olSelection.InsertAfter strLink

if you use the word code, you need to set a reference to the word object model.
 

Jerry D

New Member
Outlook version
Outlook 2010 32 bit
Email Account
IMAP
Thank you, Diane. Your help definitely pointed me in the right direction. Turned out I was overcomplicating the signature issue which your "ObjMail.Body = <snip>" explanation clarified. So I've modified the code greatly. The issue I am running into now is this: The text preceeding and following the hyperlink either doesn't show up at all or becomes clickable itself, inheriting the link's properties and the link itself no longer shows. The other issue is that I now have a 2nd link I need to include since the reports will now be in separate folders. Here's my code and the way it is appearing:

Sub Mailers_1()

Call MailFriday(Date + 2)
End Sub​
____________________________________
Sub MailFriday(dteDate As Date)
Dim ObjMail As Outlook.MailItem
Set OlApp = Outlook.Application
Set ObjMail = OlApp.CreateItem(olMailItem)
Dim objOL As Outlook.Application
Dim objNS As Outlook.NameSpace
Dim objDoc As Word.Document
Dim objSel As Word.Selection


'Salutation and opening text
Dim strStamp As String
strStamp = "Hi All " & _
"—" & vbCrLf & "Following are the links to the Schedule Reports for the week of" & _
Format(dteDate, "m/dd") & _
":" & vbCrLf & vbCrLf
'Closing text
Dim strClose As String
strClose = "Thanks,"


'link 1
Dim strlink As String
strlink = "\\corp\public\D\S-1-5-21-39997874\[URL='https://forums.slipstick.com/file://corp/public/D/S-1-5-21-39997874/Schedule%2520Reports/All%2520Boroughs']All%20Boroughs\Crew%20Reports\[/URL]"


'link 2
Dim strlink_2 As String
strlink = "\\corp\public\D\S-1-5-21-39997874\[URL='https://forums.slipstick.com/file://corp/public/D/S-1-5-21-39997874/Schedule%2520Reports/All%2520Boroughs']All%20Boroughs\Schedule%20Reports\[/URL]"
On Error Resume Next
Set objOL = Application

With ObjMail
.Display
Set objDoc = objOL.ActiveInspector.WordEditor
Set objNS = objOL.Session
Set objSel = objDoc.Application.Selection

objSel.InsertBefore strStamp & vbCrLf
objDoc.Hyperlinks.Add objSel.Range, strlink, _
"", "", strLinkText, ""


objDoc.Hyperlinks.Add objSel.Range, strlink_2, _
"", "", strlink_2Text, ""
objSel.InsertAfter strClose & vbCrLf

ObjMail.Subject = "Appointments for " & _
Format(dteDate, "m/dd")


ObjMail.Recipients.Add "my email address"
Set objOL = Nothing
Set objNS = Nothing
End With


End Sub​
 

Diane Poremsky

Senior Member
Outlook version
Outlook 2016 32 bit
Email Account
Office 365 Exchange
add
objSel.Move WdUnits.wdSentence, 1
before the hyperlink to insert a line.

ETA: you can use

objSel.Range.InsertParagraph
to insert a line too

I get an error trying to insert the second hyperlink - does it work for you? Also, you need to assign a string to strLinkText or change it to strLink.
 

Diane Poremsky

Senior Member
Outlook version
Outlook 2016 32 bit
Email Account
Office 365 Exchange
I found the problem with the second hyperlink -

Dim strlink_2 As String
strlink =
needs to be strlink_2
 
Status
Not open for further replies.
Similar threads
Thread starter Title Forum Replies Date
S HTML to Plain Text Macro - Help Outlook VBA and Custom Forms 1
A Macro to file emails into subfolder based on subject line Outlook VBA and Custom Forms 1
N Help creating a VBA macro with conditional formatting to change the font color of all external emails to red Outlook VBA and Custom Forms 5
S Visual indicator of a certain property or to show a macro toggle Outlook VBA and Custom Forms 2
L Modifying VBA script to delay running macro Outlook VBA and Custom Forms 3
S Macro to extract and modify links from emails Outlook VBA and Custom Forms 3
M Replyall macro with template and auto insert receptens Outlook VBA and Custom Forms 1
L Macro to add Date & Time etc to "drag to save" e-mails Outlook VBA and Custom Forms 8
S Macro for Loop through outlook unread emails Outlook VBA and Custom Forms 2
Globalforester ItemAdd Macro - multiple emails Outlook VBA and Custom Forms 3
S Macro to extract email addresses of recipients in current drafted email and put into clipboard Outlook VBA and Custom Forms 2
witzker HowTo start a macro with an Button in OL contact form Outlook VBA and Custom Forms 12
witzker Macro to move @domain.xx of a Spammail to Blacklist in Outlook 2019 Outlook VBA and Custom Forms 7
S Macro for other actions - Outlook 2007 Outlook VBA and Custom Forms 23
C Macro to extract sender name & subject line of incoming emails to single txt file Outlook VBA and Custom Forms 3
L Macro/VBA to Reply All, with the original attachments Outlook VBA and Custom Forms 2
S Macro to move “Re:” & “FWD:” email recieved the shared inbox to a subfolder in outlook Outlook VBA and Custom Forms 0
S Outlook Macro to send auto acknowledge mail only to new mails received to a specific shared inbox Outlook VBA and Custom Forms 0
S Outlook Macro to move reply mail based on the key word in the subjectline Outlook VBA and Custom Forms 0
Eike Move mails via macro triggered by the click of a button? Outlook VBA and Custom Forms 0
S Macro or plug-in to see if specific person was included in this email Outlook VBA and Custom Forms 4
U Macro for reminders,tasks,calendar Outlook VBA and Custom Forms 4
V macro runs slower on startup than after Outlook VBA and Custom Forms 3
N Macro to move all recipients to CC while replying Outlook VBA and Custom Forms 0
A VBA macro for 15 second loop in send and received just for 1 specific mailbox Outlook VBA and Custom Forms 1
G VBA Macro Calendar Printing Assistant 4
R Help Revising VBA macro to delete email over different time span Outlook VBA and Custom Forms 0
M Outlook macro to automate search and forward process Outlook VBA and Custom Forms 6
R Macro Schedule every day in Outlook Using Outlook 0
L Moving emails with similar subject and find the timings between the emails using outlook VBA macro Outlook VBA and Custom Forms 1
Healy Consultants Macro to remove inside organization distribution list email address when reply to all recepients Outlook VBA and Custom Forms 0
geofferyh Cannot get Macro to SAVE more than one message attachment??? Outlook VBA and Custom Forms 5
N How can I increase/faster outlook VBA Macro Speed ? Using Outlook 2
4 Macro to set the category of Deleted Item? Outlook VBA and Custom Forms 2
D.Moore Folder view settings by VBA macro Outlook VBA and Custom Forms 57
A Outlook macro to create search folder with mail categories as criteria Outlook VBA and Custom Forms 3
Dave A Run macro on existing appointment when it changes Outlook VBA and Custom Forms 1
V Outlook Macro to show Flagged messages Outlook VBA and Custom Forms 2
O Run macro automatically at sending an email Using Outlook 11
R Retain Original Message When Forwarding With Macro Outlook VBA and Custom Forms 3
C Macro to add multiple recipients to message Outlook VBA and Custom Forms 3
B Reply and replyall macro is not working Outlook VBA and Custom Forms 1
O Macro - paste as plain text Outlook VBA and Custom Forms 2
J Help Please!!! Outlook 2016 - VBA Macro for replying with attachment in meeting invite Outlook VBA and Custom Forms 9
witzker Macro to set contact reminder to next day 9:00 Outlook VBA and Custom Forms 45
M Adding Macro to populate "to" "subject" "body" not deleting email string below. Outlook VBA and Custom Forms 5
E Copying data from e-mail attachement to EXCEL file via macro Outlook VBA and Custom Forms 38
M Macro to add date/time stamp to subject Outlook VBA and Custom Forms 4
R VBA macro - new message Outlook VBA and Custom Forms 3
S Example VBA Macro - To Conditionally Change the From Account and Add a BCC Address on Emails Outlook VBA and Custom Forms 11

Similar threads

Top