A volte è utile leggere un foglio di lavoro riga per riga e prendere selettivamente i dati da esso. Un esempio di seguito mostra come eseguire questa operazione.
L'articolo presuppone che il lettore abbia visualizzato il nastro Developer e abbia familiarità con l'editor VBA. In caso contrario, Google "Excel Developer Tab" o "Excel Code Window".
L'esempio seguente manipola i dati esaminando ogni riga di indirizzi e-mail e concatenandoli in un'unica riga di indirizzo. Sebbene Excel abbia funzioni Transpose incorporate, intendiamo con il nostro codice escludere alcuni destinatari specifici e aggiungere delimitatori.
La nostra applicazione necessita di un solo foglio. Copia le informazioni di seguito nella cella A1:
| Indirizzo email |
| tcruise@paramount.com |
| julia.R@disney.com |
| Jules.dassin@gaumont.co.fr |
| EnricoFellini@cinecitta.co.it |
| marymontrary@bedlam.org.uk |
Posiziona un pulsante sul modulo per dare il via al codice.
Supponiamo che ci siano centinaia di queste email invece di solo cinque; vogliamo inviare a ciascuna lo stesso messaggio e la stessa copia della nostra sceneggiatura. Ci sono diversi modi per farlo, in particolare richiamando il programma di posta elettronica, come Outlook, tramite codice VBA. Tuttavia, questo esercizio ha due scopi:
- Mostra come scorrere facilmente un foglio di lavoro;
- Evidenzia la capacità di Excel di esaminare ogni riga e agire di conseguenza.
Il codice VBA
Il codice VBA concatenerà tutti gli indirizzi, inserendo un punto e virgola dopo ciascuno, in modo che possano essere incollati in un colpo solo nel campo del destinatario dell'email. Noterai dal codice che, dopo aver esaminato le righe, escluderà quelle francesi.
Inserisci un modulo e inserisci quanto segue:
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
Il codice mantiene la cella attiva nella colonna A, solo le righe vanno avanti. Per fare riferimento alle informazioni altrove di seguito, useremmo:
Variable = Activecell.offset(offset rows, offset columns)
Per ottenere un valore dalla colonna B nella riga attiva, ad esempio, il codice dovrebbe leggere Compensazione cella attiva(0, 1). Per ottenere il valore di A2 quando siamo in A3 si leggerebbe Offset cella attiva(-1, 0).
Per testare il tuo codice, assegna il pulsante alla macro "Principale".
Alcuni provider di servizi Internet, come precauzione anti-spam, potrebbero limitare il numero di email che puoi inviare contemporaneamente. Se utilizzi questo metodo, probabilmente è meglio verificare con loro prima di inviare centinaia di e-mail in una volta sola.
Gestione della corruzione dei file Excel

Introduzione dell'autore:
Felix Hooker è un esperto di recupero dati in DataNumen, Inc., che è il leader mondiale nelle tecnologie di recupero dati, tra cui riparazione rar corruzione e prodotti software di recupero SQL. Per maggiori informazioni visita www.datanumen.com
