Чтение данных из текстового файла с помощью Excel VBA
Ниже мы рассмотрим программу в Excel VBA, которая считывает данные из текстового файла. Этот файл содержит некоторые географические координаты, которые мы хотим импортировать в Excel.
Ситуация:
-
Во-первых, загрузите текстовый файл и добавить его в «C: \ Test \»
Поместите командную кнопку на листе и добавьте строки следующего кода:
-
Мы объявляем четыре переменные. Myfile типа String, текст типа String, TextLine типа String, Poslat типа Integer и posLong типа Integer.
Dim myFile As String, text As String, textline As String, posLat As Integer, posLong As Integer
-
Нам необходимо инициализировать переменную Myfile полный путь и имя файла.
myFile = "C:\test\geographical-coordinates.txt"
или использовать метод GetOpenFileName объекта Application, чтобы отобразить стандартное диалоговое окно Открыть и выберите файл (не открывая файл).
myFile = Application.GetOpenFilename()
Примечание: пустая часть в скобках означает, что мы не даем Excel VBA ничего в качестве входных данных. Наведите курсор на GetOpenFilename в редакторе Visual Basic и нажмите F1 для получения справки по аргументам.
-
Добавьте следующую строку кода:
Open myFile For Input As #1
Примечание: это утверждение позволяет файл для чтения. Мы можем обратиться к файлу, как # 1 в течение остальной части кода.
-
Добавьте следующие строки кода:
Do Until EOF(1) Line Input #1, textline text = text & textline Loop
Примечание: до конца файла (EOF), Excel VBA читает одну строку из файла и присваивает его TextLine. Мы используем и оператор для конкатенации (объединение) всех отдельных линий и сохранить его в тексте переменной.
-
Закройте файл.
Close #1
-
Далее, мы ищем позицию слов широты и долготы в тексте переменного. Мы используем функцию Instr.
posLat = InStr(text, "latitude") posLong = InStr(text, "longitude")
-
Мы используем эти позиции и функцию Mid для извлечения координат из текста переменного и записать координаты в ячейку A1 и A2 клеток.
Range("A1").Value = Mid(text, posLat + 10, 5) Range("A2").Value = Mid(text, posLong + 11, 5)
-
Тест программы.
Результат: