Office 2013 – VBA Email не отображает переменные To / CC / BCC

Я создаю электронные письма из Excel через VBA Outlook.Application Reference. Каждое электронное письмо заполняется данными из моего листа excel и затем помещается в поля To / CC / BCC / Subject / Body.

Теперь при запуске этого кода в Office 2010 он работает без сбоев, но в Office 2013 переменные, содержащие To / CC / BCC / etc. данные не отображаются в фактической электронной почте при отображении.

Была ли эта ссылка изменена в Office 2013?

Sub MailSheet() Dim OutApp As Object Dim outMail As Object Dim rng As Range ' set required variables Set Sourcewb = ActiveWorkbook Set Property = ActiveWorkbook.Sheets("Settings").Range("B4") Set Holidex = ActiveWorkbook.Sheets("Settings").Range("B5") Set SendTo = ActiveWorkbook.Sheets("Settings").Range("B29") Set SendCC = ActiveWorkbook.Sheets("Settings").Range("B30") Set rng = Sheets("Mail").Range("A1:F80") ' set email variables Set OutApp = CreateObject("Outlook.Application") Set outMail = OutApp.CreateItem(0) ' some code ' get ready to mail With outMail .To = SendTo .ReplyRecipients.Add "" .CC = SendCC .BCC = "" .Subject = Holidex & " - Daily Email" .HTMLBody = RangetoHTML(rng) ' display email before sending .Display '.Send or use .Display End With ' some code ' Clean up Set outMail = Nothing Set OutApp = Nothing end Sub 

Вместо создания объекта Outlook попробуйте Microsoft Outlook xx.x Object Library (Инструменты -> Ссылки, а затем выберите Microsoft Outlook xx.x Object Library ). Затем вы можете ссылаться на него, как показано ниже:

 Sub SendAnEmail() Dim oOlApp As Outlook.Application: Set oOlApp = Outlook.Application Dim oMailItem As Outlook.MailItem: Set oMailItem = oOlApp.CreateItem(olMailItem) oMailItem.To = "[email protected]" oMailItem.CC = "" oMailItem.BCC = "[email protected]" oMailItem.Subject = Sheet1.Cells(15, "D") oMailItem.HTMLBody = "Again .. testing" oMailItem.Display Set oMailItem = Nothing Set oOlApp = Nothing End Sub 

Вы можете добавить этот код в свой суб или вызвать этот Sub из вашего Sub с параметрами

Не уверен, что я могу помочь вам напрямую, но у меня есть код, который я нашел в Интернете, который, как я знаю, работает с Outlook 2016, поделится им здесь, если он поможет:

 Sub OutlookMail_1() 'Automate Sending Emails from Excel, using Outlook. 'Send text and also contents from the host workbook's worksheet range ' as Mail Body, and add an attachment with the mail. 'Automating using Early Binding: Add a reference to the Outlook Object Library ' in Excel (your host application) by clicking Tools-References in VBE, ' which will enable using Outlook's predefined constants. 'Once this reference is added, a new instance of ' Outlook application can be created by using the New keyword. 'variables declared as a specific object type ' ie. specific to the application which is being automated: Dim applOL As Outlook.Application Dim miOL As Outlook.MailItem Dim recptOL As Outlook.Recipient Dim ws As Worksheet Dim name As String Dim email As String Dim nominees As Range Dim number As String 'set worksheet: Set ws = ThisWorkbook.Sheets("Sheet1") 'Create a new instance of the Outlook application. ' Set the Application object as follows: Set applOL = New Outlook.Application 'create mail item: Set miOL = applOL.CreateItem(olMailItem) 'Add mail recipients, either the email id or their name in your address book. ' Invalid ids will result in code error. Set recptOL = miOL.Recipients.Add("Main recipient email") recptOL.Type = olTo Set recptOL = miOL.Recipients.Add("BCC Email") recptOL.Type = olbcc Set recptOL = miOL.Recipients.Add("BCC Email") recptOL.Type = olbcc Set recptOL = miOL.Recipients.Add("BCC Email") recptOL.Type = olbcc 'with the mail item: With miOL 'subject of the mail: .Subject = "Subject" 'Chr(10) represents line feed/new line, & Chr(13) represents carriage return. ' Send text and also contents from ' the host workbook's worksheet range as Mail Body. .Body = "BODY OF EMAIL" 'set importance level for the mail: .Importance = olImportanceHigh 'add an attachment to the mail: 'send the mail: .Display End With 'clear the object variables: Set applOL = Nothing Set miOL = Nothing Set recptOL = Nothing End Sub 

Некоторые из переменных, которые я установил, являются избыточными, потому что я немного изменил код, чтобы сохранить конфиденциальность, но дайте мне знать, если это поможет!

Если вы хотите использовать CC вместо Bcc, просто измените код на:

 recptOL.Type = olcc 
  • Каждая строка отправляет электронное письмо тому же получателю
  • Excel Macro для создания электронных писем работает только при открытии IDE
  • Excel создает электронную почту Outlook, но текст не выравнивается
  • Вставка таблицы Excel в электронном письме Outlook: он оглядывается назад
  • VBA проверяет список писем, используя шаблон
  • Код Excel VBA для чтения имени пользователя из ячейки, затем отправьте электронное письмо этому пользователю
  • Создание вложения из листа Google в формате MS Excel через скрипт Google
  • выберите, на какую учетную запись отправить адрес электронной почты Outlook?
  • Копировать диапазон ячеек в почтовый адрес
  • Как я могу создавать электронные письма только для уникальных адресов из столбца в excel?
  • Как создать соединение / ссылку между Excel и электронной почтой Outlook?
  • Давайте будем гением компьютера.