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:

Read Data from Text File using Excel VBA

  1. 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:

  1. 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
  1. 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.

  1. 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.

  1. 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.

  1. Chiudere il file.

Close #1
  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")
  1. 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)
  1. Verificare il programma.

Risultato:

Read Data from Text File Result