/ / Les data fra en tekstfil ved hjelp av Excel VBA

Les data fra en tekstfil ved hjelp av Excel VBA

Nedenfor ser vi på et program i Excel VBA at leser data fra en tekstfil. Denne filen inneholder noen geografiske koordinater vi vil importere til Excel.

Situasjon:

Les data fra tekstfil ved hjelp av Excel VBA

1. Først last ned tekstfilen og legg den til "C: test"

Legg en kommandoknapp på regnearket og legg til følgende kodelinjer:

2. Vi erklærer fire variabler. myFile of Type String, tekst av type String, tekstlinje av type String, posLat av type Integer, og posLong av type Integer.

Dim myFile As String, text As String, textline As String, posLat As Integer, posLong As Integer

3. Vi må initialisere variabelen myFile med hele banen og filnavnet.

myFile = "C:testgeographical-coordinates.txt"

eller

bruk GetOpenFilename-metoden i Applikasjonsobjektet for å vise standard åpen dialogboksen og velg filen (uten å åpne filen).

myFile = Application.GetOpenFilename()

Merk: Den tomme delen mellom parentesene betyr at vi ikke gir Excel VBA noe som input. Plasser markøren på GetOpenFilename i Visual Basic Editor og klikk F1 for å få hjelp til argumentene.

4. Legg til følgende kodelinje:

Open myFile For Input As #1

Merk: Denne setningen tillater filen å bli lest. Vi kan referere til filen som # 1 under resten av koden vår.

5. Legg til følgende kodelinjer:

Do Until EOF(1)
    Line Input #1, textline
    text = text & textline
Loop

Merk: Til slutten av filen (EOF), leser Excel VBA en enkelt linje fra filen og tilordner den til tekstlinje. Vi bruker & operatøren til å sammenkoble (delta) alle enkeltlinjer og lagre den i variabelteksten.

6. Lukk filen.

Close #1

7. Deretter søker vi etter plasseringen av ordene breddegrad og lengdegrad i variabelteksten. Vi bruker Instr-funksjonen.

posLat = InStr(text, "latitude")
posLong = InStr(text, "longitude")

8. Vi bruker disse posisjonene og Mid-funksjonen til å trekke ut koordinatene fra den variable teksten og skrive koordinatene til celle A1 og celle A2.

Range("A1").Value = Mid(text, posLat + 10, 5)
Range("A2").Value = Mid(text, posLong + 11, 5)

9. Test programmet.

Resultat:

Les data fra tekstfilresultat

Les også: