Как пройтись по листу Excel с помощью VBA

Поделись сейчас:

Иногда бывает полезно читать рабочий лист построчно и выборочно брать из него данные. Пример ниже показывает, как это сделать.

В статье предполагается, что у читателя отображается лента «Разработчик» и он знаком с редактором VBA. Если нет, погуглите «Excel Developer Tab» или «Excel Code Window».

В следующем примере данные манипулируются путем проверки каждой строки адресов электронной почты и объединения их в одну адресную строку. Хотя в Excel есть встроенные функции транспонирования, мы намерены в нашем коде исключить некоторых конкретных адресатов и добавить разделители.

Нашему приложению нужен только один лист. Скопируйте приведенную ниже информацию в ячейку A1:

Email
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

Повреждение файла ExcelВремя от времени мы сталкиваемся с повреждением рабочих книг до такой степени, что сам Excel не может их восстановить. Это катастрофа для большинства пользователей Excel, включая экспертов. Однако, если у вас есть эффективный инструмент восстановления, вы можете восстановить данные. поврежденные файлы xlsx легко и быстро.

Об авторе:

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

Поделись сейчас:

Комментарии закрыты.