2015-03-19 5 views
1

Я пишу код VBA, который взаимодействует с сохраненным документом, отправляет документ как электронное письмо (а не вложение), несколько раз в список электронной почты в Excel. My Excel лист имеет свой список в следующем формате:Код Excel VBA для отправки текстового документа в виде электронного письма в список Excel в Excel

+--------------------------------------------------------+----------------+-------------------------------------+---------------------------------------+----------------+----------------------------+ 
|       Emails       |  CC1  | CC2 - Primary Electronic Sales - US | CC3 - Primary Electronic Trading - US | Additional CC? | Concatenation of all CC's | 
+--------------------------------------------------------+----------------+-------------------------------------+---------------------------------------+----------------+----------------------------+ 
| [email protected]; [email protected]; [email protected] | Outlook Name 1 | Outlook name 2      | Outlook name 3      | Outlook name 4 | Concatenation of all CC's | 
+--------------------------------------------------------+----------------+-------------------------------------+---------------------------------------+----------------+----------------------------+ 

код ниже. Цель состоит в том, чтобы загрузить документ «H: \ Thought Pieces \ Small Cap Names.doc» и отправить документ в виде электронной почты (не вложения) в каждую из записей в столбце «Электронная почта», а также Столбец «Конкатенация всех CC».

Тема может быть просто статичной, я ее не буду менять, любая помощь будет оценена ... прямо сейчас, почта отправляется только в первую строку, правильно отправляя по электронной почте список во втором столбце, первой строке и зацикливание списка в последнем столбце, первая строка.

Но он висит, и говорит, что «метод„субъект“объекта„_MailItem“потерпел неудачу. Я не могу пройти мимо этого, к сожалению, любая помощь очень ценится.

Sub SendOutlookMessages() 

'Dimension variables. 
Dim OL As Object, MailSendItem As Object 
Dim W As Object 
Dim MsgTxt As String, SendFile As String 
Dim ToRangeCounter As Variant 

Set wd = CreateObject("Word.Application") 
Dim doc As Word.Document 

'Assigns Word file to send 
Set wd = GetObject(, "Word.Application") 
If wd Is Nothing Then 
Set wd = CreateObject("Word.Application") 
blnWeOpenedWord = True 
End If 
Set doc = wd.Documents.Open _ 
(Filename:="H:\Thought Pieces\Small Cap Names.doc", ReadOnly:=True) 
Set itm = doc.MailEnvelope.Item 

'Starts Outlook session 
Set OL = CreateObject("Outlook.Application") 
Set MailSendItem = doc.MailEnvelope.Item 

ToRangeCounter = 0 

'Identifies number of recipients for To list. 
For Each xCell In ActiveSheet.Range(Range("tolist"), _ 
    Range("tolist").End(xlToRight)) 
    ToRangeCounter = ToRangeCounter + 1 
Next xCell 

If ToRangeCounter = 256 Then ToRangeCounter = 1 

'Creates message 
For Each xRecipient In Range("tolist") 
    With MailSendItem 
    .Subject = ActiveSheet.Range("subjectcell").Text 
    .Body = MsgTxt 
    .To = xRecipient 
    .Cc = xRecipient.Offset(0, 6) 
    .Send 
    End With 
Next xRecipient 


'Ends Outlook session 
Set OL = Nothing 

End Sub 

ответ

1

Итак ... Я на самом деле поняли мой собственный вопрос после связки испытаний.

Я добавил второй «Set MailSendItem = doc.MailEnvelope.Item» внутри цикла, потому что, по-видимому элемент исчезает, как только передается Пошлите.

I надеюсь, это поможет кому-то в будущее.

+0

Вы должны отметить это. Хорошая работа! – KenSquare

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