Понякога е полезно да четете работен лист ред по ред и избирателно да вземате данни от него. Пример по-долу показва как да направите това.
Статията предполага, че на читателя е показана лентата за програмисти и е запознат с редактора на VBA. Ако не, моля Google „Раздел за програмисти на Excel“ или „Прозорец на кода на Excel“.
Следващият пример манипулира данните, като изследва всеки ред имейл адреси и ги обединява в един адресен ред. Докато Excel има вградени функции за транспониране, ние възнамеряваме с нашия код да изключим някои конкретни адресати и да добавим разделители.
Нашето приложение се нуждае само от един лист. Копирайте информацията по-долу в клетка A1:
| tcruise@paramount.com |
| julia.R@disney.com |
| Jules.dassin@gaumont.co.fr |
| EnricoFellini@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
Кодът запазва активната клетка в колона А, само редовете продължават напред. За да препратим информация другаде поред, бихме използвали:
Variable = Activecell.offset(offset rows, offset columns)
Например, за да се получи стойност от колона Б в активния ред, кодът ще прочете Activecell.offset (0, 1). За да получим стойността на A2, когато сме в A3, ще прочетем Activecell.offset (-1, 0).
За да тествате кода си, задайте бутона на макроса „Основен“.
Някои доставчици на интернет услуги, като предпазна мярка срещу нежелана поща, може да ограничат броя на имейлите, които можете да изпращате наведнъж. Ако използвате този метод, вероятно е най-добре да се консултирате с тях, преди да изпратите стотици имейли наведнъж.
Работа с повреда на файлове в Excel

Въведение на автора:
Феликс Хукър е експерт по възстановяване на данни в DataNumen, Inc., която е световен лидер в технологиите за възстановяване на данни, включително ремонт rar корупция и sql софтуерни продукти за възстановяване. За повече информация посетете WWW.datanumen.com
