Este util uneori să citiți o foaie de lucru rând cu linie și să luați selectiv date din ea. Un exemplu de mai jos arată cum să faceți acest lucru.
Articolul presupune că cititorul are afișată panglica pentru dezvoltatori și este familiarizat cu Editorul VBA. Dacă nu, vă rugăm să Google „Fila Dezvoltator Excel” sau „Fereastra Cod Excel”.
Următorul exemplu manipulează datele examinând fiecare rând de adrese de e-mail și concatenându-le într-o singură linie de adresă. În timp ce Excel are funcții de transpunere încorporate, intenționăm cu codul nostru să excludem anumiți destinatari și să adăugăm delimitatori.
Aplicația noastră are nevoie de o singură foaie. Copiați informațiile de mai jos în celula A1:
| Adresă de e-mail |
| tcruise@paramount.com |
| julia.R@disney.com |
| Jules.dassin@gaumont.co.fr |
| EnricoFellini@cinecitta.co.it |
| marymontrary@bedlam.org.uk |
Plasați un buton pe formular pentru a lansa codul.
Să presupunem că există sute de astfel de e-mailuri în loc de doar cinci; vrem să trimitem fiecăruia același mesaj și aceeași copie a scenariului nostru. Există mai multe modalități de a face acest lucru, cel mai notabil fiind apelarea instrumentului de e-mail, cum ar fi Outlook, din cod VBA. Totuși, acest exercițiu servește două scopuri:
- Arătați cum să parcurgeți cu ușurință o foaie de lucru;
- Evidențiați capacitatea Excel de a examina fiecare rând și de a acționa pe baza acestuia.
Codul VBA
Codul VBA va concatena toate adresele, introducând un punct și virgulă după fiecare, astfel încât acestea să poată fi lipite dintr-o singură mișcare în câmpul destinatar al e-mailului. Veți observa din cod că, după examinarea rândurilor, le va exclude pe cele franceze.
Introduceți un modul și introduceți următoarele:
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
Codul păstrează celula activă în coloana A, doar rândurile merg mai departe. Pentru a face referire la informații în altă parte într-un rând, am folosi:
Variable = Activecell.offset(offset rows, offset columns)
Pentru a obține o valoare din coloana B din rândul activ, de exemplu, codul ar citi Activecell.offset(0, 1). Pentru a obține valoarea lui A2 când suntem în A3, ar citi Activecell.offset(-1, 0).
Pentru a testa codul, atribuiți butonul macrocomenzii „Principal”.
Unii Furnizori de servicii de internet, ca măsură de precauție anti-spam, ar putea limita numărul de e-mailuri pe care le puteți trimite simultan. Dacă utilizați această metodă, probabil că cel mai bine este să verificați cu ei înainte de a trimite sute de e-mailuri dintr-o singură mișcare.
Gestionarea corupției fișierelor Excel

Introducerea autorului:
Felix Hooker este un expert în recuperarea datelor DataNumen, Inc., care este lider mondial în tehnologiile de recuperare a datelor, inclusiv repara rar corupţie și produse software de recuperare sql. Pentru mai multe informații vizitați www.datanumen.com
