Cum să parcurgeți foaia de lucru Excel cu VBA

Distribuie acum:

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.Plasați un buton pe formular pentru a începe 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

Corupția fișierului ExcelDin când în când ne confruntăm cu coruperea registrelor de lucru, în măsura în care Excel în sine nu le poate recupera. Acest lucru este un dezastru pentru majoritatea utilizatorilor de Excel, inclusiv pentru experți. Cu toate acestea, dacă aveți la îndemână un instrument eficient de recuperare, puteți restaura fișiere xlsx deteriorate ușor și rapid.

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

Distribuie acum:

Comentariile sunt închise.