Макрос на VBA, който използва данни от документ на Word и работна книга на Excel за изпращане на съобщения от Outlook

Обобщена информация

В тази статия е описан макросът Visual Basic for Applications, който използва данни от документ на Microsoft Word и работна книга на Microsoft Excel за изпращане на съобщения от Microsoft Outlook.

Повече информация

Microsoft предоставя примери за програмиране само за илюстрация, без да има изрични или подразбиращи се гаранции. Това включва, но не се ограничава до подразбиращите се гаранции за продаваемост или годност за определена цел. В тази статия се предполага, че сте запознати с езика за програмиране, който се показва, и с инструментите, които се използват за създаване и отстраняване на грешки при процедурите. Инженери по поддръжката на Microsoft могат да ви помогнат да обясните функционалността на конкретна процедура, но те няма да променят тези примери, за да ви предоставят допълнителна функционалност или да конструират процедури, за да отговорят на вашите конкретни изисквания. Следващият пример предполага, че има две дефинирани имена в работния лист:

  • Първото дефинирано име "subjectcell" препраща към клетка, съдържаща реда за тема на съобщението (например "това е тестово съобщение.").

  • Второто дефинирано име, "tolist", препраща към първата клетка в хоризонталния списък, която съдържа списък на получателите (например "Джон Доу"; "Jane doe" и т. н.).

Също така трябва да имате документ на Microsoft Word. Текстът на този документ се използва от макроса като основния текст на съобщението.

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 'Identifies Word file to send SendFile = Application.GetOpenFilename(Title:="Select MS Word " & _     "file to mail, then click 'Open'", buttontext:="Send", _     MultiSelect:=False) 'Starts Word session Set W = GetObject(SendFile) 'Pulls text from file for message body MsgTxt = W.Range(Start:=W.Paragraphs(1).Range.Start, _    End:=W.Paragraphs(W.Paragraphs.Count).Range.End) 'Ends Word session Set W = Nothing 'Starts Outlook session Set OL = CreateObject("Outlook.Application") Set MailSendItem = OL.CreateItem(olMailItem) 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 With MailSendItem     .Subject = ActiveSheet.Range("subjectcell").Text     .Body = MsgTxt     'Creates "To" list     For Each xRecipient In Range("tolist").Resize(1, ToRangeCounter)         RecipientList = RecipientList & ";" & xRecipient     Next xRecipient     .To = RecipientList     .Send End With 'Ends Outlook session Set OL = NothingEnd Sub

Нуждаете се от още помощ?

Разширете уменията си
Преглед на обучението
Получавайте първи новите функции
Присъединете се към Microsoft приобщени

Беше ли полезна тази информация?

Благодарим ви за обратната връзка!

Благодарим ви за вашата обратна връзка. Изглежда, че ще бъде полезно да ви свържем с един от нашите агенти по поддръжката на Office.

×