Leggere i dati da un file di testo utilizzando Excel VBA
Di seguito vedremo un programma in Excel VBA che legge i dati da un file di testo. Questo file contiene alcune coordinate geografiche vogliamo importare in Excel.
Situazione:
-
In primo luogo, scaricare il file di testo e aggiungerlo alla “C: \ test \”
Posizionare un pulsante di comando nel foglio di lavoro e aggiungere le righe di codice che segue:
-
Dichiariamo quattro variabili. myFile di tipo String, il testo di tipo String, TextLine 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
-
Abbiamo bisogno di inizializzare la myFile variabile con il percorso completo e il nome del file.
myFile = "C:\test\geographical-coordinates.txt"
o utilizzare il metodo GetOpenFilename dell’oggetto Application per visualizzare la finestra di dialogo Apri di serie e selezionare il file (senza in realtà l’apertura del file).
myFile = Application.GetOpenFilename()
Nota: la parte vuota tra le parentesi significa che diamo Excel VBA nulla come input. Posizionare il cursore sul GetOpenFilename in Visual Basic Editor e fare clic su F1 per aiuto su argomenti.
-
Aggiungere la seguente riga di codice:
Open myFile For Input As #1
Nota: questa istruzione permette il file da leggere. Siamo in grado di fare riferimento al file come # 1 durante il resto del nostro codice.
-
Aggiungere il seguente righe di codice:
Do Until EOF(1) Line Input #1, textline text = text & textline Loop
Nota: fino alla fine del file (EOF), Excel VBA legge una singola riga dal file e l’assegna a TextLine. Usiamo l’operatore & per concatenare (join) tutte le singole linee e lo immagazzinano nel testo variabile.
-
Chiudere il file.
Close #1
-
Successivamente, cercare la posizione delle parole di latitudine e la longitudine nel testo variabile. Usiamo la funzione Instr.
posLat = InStr(text, "latitude") posLong = InStr(text, "longitude")
-
Usiamo queste posizioni e la funzione Mid per estrarre le coordinate del testo variabile e scrivere le coordinate alla cella A1 e A2 cellule.
Range("A1").Value = Mid(text, posLat + 10, 5) Range("A2").Value = Mid(text, posLong + 11, 5)
-
Verificare il programma.
Risultato: