A continuación veremos un programa en Excel VBA que lee datos de un archivo de texto . Este archivo contiene algunas coordenadas geográficas que queremos importar a Excel.
Situación:
1. Primero, descarga el archivo de texto y añádelo a «C:testN»
Coloca un botón de comando en tu hoja de trabajo y añade las siguientes líneas de código:
2. Declaramos cuatro variables. miArchivo de tipo String, texto de tipo String, línea de texto de tipo String, posLat de tipo Integer, y posLong de tipo Integer.
Dim myFile As String, text As String, textline As String, posLat As Integer, posLong As Integer
3. Necesitamos inicializar la variable myFile con la ruta completa y el nombre del archivo.
myFile = «C:\N-coordinadas-geográficas.txt»
o
utilizar el método GetOpenFilename del objeto Aplicación para mostrar el cuadro de diálogo estándar Abrir y seleccionar el archivo (sin abrir realmente el archivo).
myFile = Aplicación.GetOpenFilename()
Nota: la parte vacía entre los paréntesis significa que no le damos nada a Excel VBA como entrada. Coloca el cursor en GetOpenFilename en el Editor de Visual Basic y haz clic en F1 para obtener ayuda sobre los argumentos.
4. Añade la siguiente línea de código:
Abrir mi archivo para la entrada como #1
Nota: esta declaración permite la lectura del archivo. Podemos referirnos al archivo como #1 durante el resto de nuestro código.
5. Añade las siguientes líneas de código:
Hasta EOF(1) Entrada de línea #1, línea de texto texto = texto & línea de texto Bucle
Nota: hasta el final del archivo (EOF), Excel VBA lee una sola línea del archivo y la asigna a la línea de texto. Usamos el operador & para concatenar (unir) todas las líneas simples y almacenarlas en el texto variable.
6. Cierra el archivo.
Cerrar #1
7. A continuación, buscamos la posición de las palabras latitud y longitud en el texto variable. Usamos la función Instr.
posLat = InStr(texto, «latitud») posLong = InStr(texto, «longitud»)
8. Utilizamos estas posiciones y la función Mid para extraer las coordenadas del texto variable y escribir las coordenadas en la celda A1 y la celda A2.
Rango(«A1»).Valor = Mid(texto, posLat + 10, 5) Rango(«A2»).Valor = Mid(texto, posLargo + 11, 5)
9. Pruebe el programa.
Resultado: