Иногда бывает полезно читать рабочий лист построчно и выборочно брать из него данные. Пример ниже показывает, как это сделать.
В статье предполагается, что у читателя отображается лента «Разработчик» и он знаком с редактором VBA. Если нет, погуглите «Excel Developer Tab» или «Excel Code Window».
В следующем примере данные манипулируются путем проверки каждой строки адресов электронной почты и объединения их в одну адресную строку. Хотя в Excel есть встроенные функции транспонирования, мы намерены в нашем коде исключить некоторых конкретных адресатов и добавить разделители.
Нашему приложению нужен только один лист. Скопируйте приведенную ниже информацию в ячейку A1:
| tcruise@paramount.com |
| julia.R@disney.com |
| Жюль.дассен@gaumont.co.fr |
| ЭнрикоФеллини@cinecitta.co.it |
| marymontrary@bedlam.org.uk |
Поместите кнопку на форму, чтобы запустить код.
Предположим, что таких писем сотни, а не всего пять; мы хотим отправить каждому из них одно и то же сообщение и один и тот же текст сценария. Существует несколько способов сделать это, наиболее распространенный из которых — вызов почтовой программы, например Outlook, из кода VBA. Однако это упражнение служит двум целям:
- Покажите, как легко перемещаться по рабочему листу;
- Подчеркните способность Excel проверять каждую строку и действовать в соответствии с ней.
Код VBA
Код VBA объединит все адреса, вставив точку с запятой после каждого, чтобы их можно было вставить за один раз в поле адресата электронной почты. Из кода вы заметите, что после изучения строк он исключит французские.
Вставьте модуль и введите следующее:
Option Explicit
Dim strEmail As String
Dim strAll As String
Sub Main()
strAll = ""
Range("C2") = strAll 'clear previous program results
Sheets("Sheet1").Select
Range("A2").Select
Do While ActiveCell > "" 'loop until row 7
strEmail = ActiveCell
If Right(strEmail, 2) <> "fr" Then 'exclude France
strAll = strAll & strEmail & ";"
End If
Range("A" & ActiveCell.Row + 1).Select 'move on a row in the SAME column
Loop
Range("C2") = strAll
End Sub
Код сохраняет активную ячейку в столбце A, перемещаются только строки. Чтобы ссылаться на информацию в другом месте строки, мы будем использовать:
Variable = Activecell.offset(offset rows, offset columns)
Например, чтобы получить значение из столбца B в активной строке, код будет читать Activecell.смещение (0, 1). Чтобы получить значение A2, когда мы находимся в A3, следует читать Activecell.offset(-1, 0).
Чтобы протестировать свой код, назначьте кнопку на макрос «Главный».
Некоторые интернет-провайдеры в качестве меры защиты от спама могут ограничивать количество писем, которые вы можете отправить за один раз. Если вы используете этот метод, вероятно, лучше проконсультироваться с ними, прежде чем отправлять сотни электронных писем за один раз.
Обработка повреждения файла Excel

Об авторе:
Феликс Хукер — эксперт по восстановлению данных в DataNumen, Inc., которая является мировым лидером в области технологий восстановления данных, включая ремонт rar коррупция и программные продукты для восстановления sql. Для получения дополнительной информации посетите www.datanumen.com
