Di seguito vedremo un programma in Excel VBA Quello legge i dati da un file di testo. Questo file contiene alcune coordinate geografiche che vogliamo importare in Excel.
Situazione:
1. Innanzitutto, scarica il file di testo e aggiungilo a "C:\test\"
Posiziona un pulsante di comando sul foglio di lavoro e aggiungi le seguenti righe di codice:
2. Dichiariamo quattro variabili. myFile di tipo String, testo di tipo String, riga di testo di tipo String, posLat di tipo Integer e posLong di tipo Integer.
Dim myFile As String, text As String, textline As String, posLat As Integer, posLong As Integer
3. Dobbiamo inizializzare la variabile myFile con il percorso completo e il nome del file.
mioFile = "C:\test\coordinate geografiche.txt"
o
utilizzare il metodo GetOpenFilename dell'oggetto Application per visualizzare la finestra di dialogo Apri standard e selezionare il file (senza effettivamente aprire il file).
mioFile = Application.GetOpenFilename()
Nota: la parte vuota tra parentesi significa che non diamo nulla a Excel VBA come input. Posiziona il cursore su GetOpenFilename nell'editor di Visual Basic e fai clic su F1 per assistenza sugli argomenti.
4. Aggiungi la seguente riga di codice:
Apri myFile per l'input come #1
Nota: questa istruzione consente la lettura del file. Possiamo fare riferimento al file come #1 durante il resto del nostro codice.
5. Aggiungi le seguenti righe di codice:
Fai fino a EOF(1)
Input di riga n. 1, riga di testo
testo = testo e riga di testo
Ciclo continuo
Nota: fino alla fine del file (EOF), Excel VBA legge una singola riga dal file e la assegna alla riga di testo. Usiamo l'operatore & per concatenare (unire) tutte le singole righe e memorizzarle nel testo variabile.
6. Chiudere il file.
Chiudi #1
7. Successivamente, cerchiamo la posizione delle parole latitudine e longitudine nel testo variabile. Usiamo la funzione Instr.
posLat = InStr(testo, "latitudine")
posLong = InStr(testo, "longitudine")
8. Usiamo queste posizioni e la funzione Mid per estrarre le coordinate dal testo variabile e scrivere le coordinate nella cella A1 e nella cella A2.
Range("A1").Value = Mid(text, posLat + 10, 5)
Range("A2").Value = Mid(text, posLong + 11, 5)
9. Testare il programma.
Risultato: