2015-11-30 4 views
-1

Мой код работал нормально, пока не появились вложения.Добавление Outlook вложений в VBA

Что я пытаюсь сделать.

  1. Все адреса электронной почты в колонке B.
  2. В колонке C есть пути к файлам, а также имена файлов рядом с каждым адресом электронной почты. (C: \ desktop \ test.xlsm)
  3. Я пытаюсь автоматизировать процесс отправки электронных писем по этим адресам с помощью этих вложений. Выдается пользовательская форма, которая запрашивает любой CC, тему, текст для массовых писем.

Вот код

Dim SendTo As String 
Dim Atmt As String 
Dim ToMSg As String 

    For i = 2 To LastRow 
     Atmt = ThisWorkbook.Sheets(1).Cells(i, 3).Value 

     SendTo = ThisWorkbook.Sheets(1).Cells(i, 2) 
      If SendTo <> "" Then 
       ToMSg = DraftBox.Value 
       Send_Mail SendTo, ToMSg 
      End If 

    Next i 

    Unload Me 

End Sub 


Sub Send_Mail(SendTo As String, ToMSg As String) 
    Dim OutlookApp As Object 
    Dim OutlookMail As Object 

    Set OutlookApp = CreateObject("Outlook.Application") 
    Set OutlookMail = OutlookApp.CreateItem(0) 


    With OutlookMail 
     .To = SendTo 
     .CC = CC.Value 
     .BCC = BCC.Value 
     .Subject = Subject.Value 
     .Body = ToMSg 
 .attachments.add Atmt 
 .Send 

Я приложил соответствующий код. Он продолжает говорить мне, что Атмт пуст. Пожалуйста, помогите ..

+0

Вы не указали его в качестве параметра. – findwindow

+0

вложения? у меня есть .. Это говорит мне, что источник данных не был предоставлен. Но когда я копирую вставку filepath + filename, его отправляет электронное письмо с приложением –

+0

Что-то здесь не хватает? 'Sub Send_Mail (SendTo As String, ToMSg As String)' Edit: вы пишете этот код ??? Edit2: Отсутствует также вызов. – findwindow

ответ

0

В Send_Mail подразделов вам необходимо включить аргумент, чтобы пройти путь присоединения:

Sub Send_Mail(SendTo As String, ToMSg As String, Atmt as String) 

Тогда при вызове Send_Mail к югу, передать аргумент вы хотите предоставить:

Send_Mail SendTo, ToMSg, Atmt 

Тот факт, что я использовал Atmt, был абсолютно произвольным и основан на вашем примере. Вы можете вызвать String любое имя, которое вы хотите в своем суб.

Вы также могли бы сделать его работу, объявляя Atmt как Global или Public переменной вне рамок какой-либо конкретной Sub. В настоящее время он объявлен внутри первого подпакета, поэтому, когда вы пытаетесь использовать его в модуле Send_Mail, переменная неизвестна этому суб, поэтому он сообщает вам, что он пуст.

Я бы поехал больше для первого метода.

+0

спасибо! Я принимаю ответ за 7 минут .. –

Смежные вопросы