Leer datos de un archivo de texto usando Excel VBA
A continuación vamos a ver un programa en Excel VBA que lee datos de un archivo de texto. Este archivo contiene unas coordenadas geográficas que desea importar en Excel.
Situación:
-
En primer lugar, descargue el archivo de texto y añadirlo a «C: \ test \»
Coloque un botón de comando en la hoja de trabajo y añadir las líneas de código siguientes:
-
Declaramos cuatro variables. myFile de tipo String, texto de tipo String, línea de texto de tipo String, posLat de tipo entero, y posLong de tipo entero.
Dim myFile As String, text As String, textline As String, posLat As Integer, posLong As Integer
-
necesitamos inicializar la variable myFile con la ruta completa y el nombre del archivo.
myFile = "C:\test\geographical-coordinates.txt"
o utilizar el método GetOpenFilename del objeto Application para mostrar el cuadro de diálogo estándar Abrir y seleccione el archivo (y sin tener que abrir el archivo).
myFile = Application.GetOpenFilename()
Nota: la parte vacía entre los corchetes significa que damos Excel VBA nada como entrada. Coloca el cursor en GetOpenFilename en el Editor de Visual Basic y haga clic en F1 para obtener ayuda en los argumentos.
-
Añadir la siguiente línea de código:
Open myFile For Input As #1
Nota: esta declaración permite que el archivo para ser leído. Podemos hacer referencia al archivo como # 1 durante el resto de nuestro código.
-
Añadir las siguientes líneas de código:
Do Until EOF(1) Line Input #1, textline text = text & textline Loop
Nota: hasta el final del archivo (EOF), Excel VBA lee una sola línea del archivo y lo asigna a línea de texto. Utilizamos el operador & para concatenar (unir) todas las líneas individuales y la almacenamos en el texto variable.
-
Cierre el archivo.
Close #1
-
A continuación, la búsqueda de la posición de las palabras de latitud y longitud en el texto variable. Utilizamos la función Instr.
posLat = InStr(text, "latitude") posLong = InStr(text, "longitude")
-
Utilizamos estas posiciones y la función Mid para extraer las coordenadas del texto variable y escribir las coordenadas de la celda A1 y la celda A2.
Range("A1").Value = Mid(text, posLat + 10, 5) Range("A2").Value = Mid(text, posLong + 11, 5)
Prueba 9. programa.
Resultado: