Код Excel VB для отправки электронной почты: добавление электронной почты в CC

Я пытаюсь настроить код VB, который может отправить электронное письмо на конкретный адрес электронной почты, указанный в столбце «L» листа 1. Задача, с которой я столкнулся, заключается в добавлении строки «.CC». Адреса электронной почты для моего предполагаемого списка «СС» доступны на столбце «M» постыдного листа «Sheet01»,

Может ли кто-нибудь предложить подходящее кодирование для вытаскивания писем на линию CC?

Примечание. Длина списка CC (столбец M) не является статической или изменяется.

спасибо

Sub CDO_Personalized_Mail_Body() Dim iMsg As Object Dim iConf As Object Dim cell As Range Dim Flds As Variant With Application .ScreenUpdating = False .EnableEvents = False End With Set iMsg = CreateObject("CDO.Message") Set iConf = CreateObject("CDO.Configuration") iConf.Load -1 ' CDO Source Defaults Set Flds = iConf.Fields With Flds .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "[email protected]" .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "[email protected]" .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com" .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465 .Update End With For Each cell In Sheets("Sheet1").Columns("L").Cells If cell.Value Like "?*@?*.?*" Then Set iMsg = CreateObject("CDO.Message") With iMsg Set .Configuration = iConf .To = cell.Value .From = """Test User"" <[email protected]>" .CC = Sheets("Sheet1").Columns("M").Cells ' **here i want Insert CC line Email ID** .Subject = "***Important - Email Alert***" .TextBody = "Hi " & vbNewLine & vbNewLine & _ "This is Auto genrated email " & cell.Offset(0, 2).Value & vbNewLine & vbNewLine & _ "Thank You" .Send End With Set iMsg = Nothing End If Next cell With Application .EnableEvents = True .ScreenUpdating = True End With 

End Sub

Диапазон имеет свойство .Row, которое возвращает номер строки первой строки. Таким образом, для отдельной ячейки cell.Row дает свою строку.

 Set sh = ActiveWorkbook.Worksheets("Sheet1") For Each cell In sh.UsedRange.Columns("L").Cells ' CC cell: same row, column M Set cellCC = sh.Cells(cell.Row, "M") Debug.Print cell.Row, cellCC.Value Next cell 

Обратите внимание, что у вас должен быть Sheet.UsedRange. там, или For Each , зациклится на все 1048 576 строк листа.

Для такого рода задач я предпочитаю не использовать For Each а «стандартный» цикл над строками, как, например, IMHO, это лучше читаемо.

 For y = 1 To sh.Columns("L").SpecialCells(xlCellTypeLastCell).Row Debug.Print y, sh.Cells(y, "L").Value, sh.Cells(y, "M").Value Next y 
Interesting Posts

Ошибка времени выполнения 424 excel vba

SOAPUI: невозможно разрешить ошибку класса XSSFWorkBook

Вложенные, если не работает в Google Таблицах

Sub в VBA, который принимает диапазон

Объединить сводные таблицы с различными, но совместимыми мерами?

Выбор / снятие выделения всех флажков Checkbox в диапазоне EXCEL VBA macro

Как решить метод или элемент данных не найдена ошибка в MS Access VBA

Создать гиперссылку в ячейке Excel?

Excel: соответствие ближайшей дате из диапазона дат

Excel не может скопировать пасту в две книги

Как выполнить цикл while, сохранить формулу в ячейке и применить ее к целой строке? превосходить

Ошибка времени выполнения 1004 в диапазоне (ячейки ())

Преобразование xlsx в pdf: линии исчезают после преобразования

Выразить процент в виде значения диапазона

Скомпилируйте ошибку, говоря «неправильное количество аргументов или недопустимое присвоение свойств»

Давайте будем гением компьютера.