Macro to check file name with outlook address book

Not open for further replies.


New Member
Outlook version
Outlook 2013 64 bit
Email Account
Exchange Server

Can please advise how to check the file name with the address book and return the email address in the To field.

In a folder I have multiple excel files saved with different person names. I am having macro to attach the files in a separate email message.
Now, I need a macro to check the file name with the address book, if found then the corresponding email address should come in the To field. If not found then a default email address( to be displayed in the to field. Please advise how to modify/include in the code.
Below is the code.

Sub SendFilesByEmail()
Dim sFName As String
Dim i As Integer
Dim olApp As Object
Dim oFSO As Object

Dim fldName As String
fldName = BrowseForFolder("Select the folder with the files to be attached.")

  Set oFSO = CreateObject("Scripting.FileSystemObject")
  If Not oFSO.FolderExists(fldName) Then
  MsgBox "The folder '" & fldName & "' does not exist"
  GoTo lbl_Exit
  End If
  On Error Resume Next
  Set olApp = GetObject(, "Outlook.Application")
  If Err.Number <> 0 Then
  'Outlook wasn't running, start it from code
  MsgBox "This function is much faster and more reliable if Outlook is already running." & vbCr & _
  "Start Outlook and run the macro again"
  Set olApp = Nothing
  GoTo lbl_Exit
  End If
  i = 0
  sFName = Dir(fldName)
  Do While Len(sFName) > 0
  Call SendasAttachment(fldName & sFName)  'send the path and filename
  sFName = Dir
  i = i + 1
  MsgBox i & " Emails were Drafted"
  Set oFSO = Nothing
  Exit Sub
End Sub

Function SendasAttachment(fname As String)
Dim olApp As Object
Dim olMsg As Object
Dim olInsp As Object
Dim wdDoc As Object
Dim oRng As Object
Dim Strbody As String

  On Error GoTo lbl_Exit
  Set olApp = GetObject(, "Outlook.Application")
  Set olMsg = olApp.CreateItem(0)  ' email

  On Error Resume Next

  ' send message
  With olMsg
  .BodyFormat = 2
  .To = ""
  .CC = "xxxx@xxxx;"
  .Subject = "Access Rights for Year " & Format(Now, "YYYY")
  Set olInsp = .GetInspector
  Set wdDoc = olInsp.WordEditor
  Set oRng = wdDoc.Range
  'Preserve the default signature
  oRng.Collapse 1
  'as we added the path to the variable, remove it as it is not relevant to the message
  ' oRng.Text = "Hi " & olMsg.To & "," & vbCr & vbCr & "I have attached " & _
  Mid(fname, InStrRev(fname, Chr(92)) + 1) & " as you requested."

Strbody = "<BODY style=font-size:11pt;font-family:Tahoma>Dear  <br><br>" & _
  Regards,<br>" & _
  .HTMLBody = Strbody
  .attachments.Add fname
  ' .send
  End With
  'Clean up
  Set olMsg = Nothing
  Set olApp = Nothing
  Set olInsp = Nothing
  Set wdDoc = Nothing
  Set oRng = Nothing
  Exit Function
End Function

Public Function BrowseForFolder(Optional strTitle As String) As String
 'strTitle is the title of the dialog box
 Dim fDialog As FileDialog
 On Error GoTo err_Handler
 Set fDialog = Application.FileDialog(msoFileDialogFolderPicker)
 With fDialog
 .Title = strTitle
 .AllowMultiSelect = False
 .InitialView = msoFileDialogViewList
 If .Show <> -1 Then GoTo err_Handler:
 BrowseForFolder = fDialog.SelectedItems.Item(1) & Chr(92)
 End With
 Exit Function
 BrowseForFolder = vbNullString
 Resume lbl_Exit
 End Function
Not open for further replies.