Ниже мы рассмотрим программу в Excel VBA, которая считывает данные из текстового файла. Этот файл содержит некоторые географические координаты, которые мы хотим импортировать в Excel.

Ситуация:

Read Data from Text File using Excel VBA

  1. Во-первых, загрузите текстовый файл и добавить его в «C: \ Test \»

Поместите командную кнопку на листе и добавьте строки следующего кода:

  1. Мы объявляем четыре переменные. 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
  1. Нам необходимо инициализировать переменную Myfile полный путь и имя файла.

myFile = "C:\test\geographical-coordinates.txt"

или использовать метод GetOpenFileName объекта Application, чтобы отобразить стандартное диалоговое окно Открыть и выберите файл (не открывая файл).

myFile = Application.GetOpenFilename()

Примечание: пустая часть в скобках означает, что мы не даем Excel VBA ничего в качестве входных данных. Наведите курсор на GetOpenFilename в редакторе Visual Basic и нажмите F1 для получения справки по аргументам.

  1. Добавьте следующую строку кода:

Open myFile For Input As #1

Примечание: это утверждение позволяет файл для чтения. Мы можем обратиться к файлу, как # 1 в течение остальной части кода.

  1. Добавьте следующие строки кода:

Do Until EOF(1)

Line Input #1, textline

text = text & textline

Loop

Примечание: до конца файла (EOF), Excel VBA читает одну строку из файла и присваивает его TextLine. Мы используем и оператор для конкатенации (объединение) всех отдельных линий и сохранить его в тексте переменной.

  1. Закройте файл.

Close #1
  1. Далее, мы ищем позицию слов широты и долготы в тексте переменного. Мы используем функцию Instr.

posLat = InStr(text, "latitude")

posLong = InStr(text, "longitude")
  1. Мы используем эти позиции и функцию Mid для извлечения координат из текста переменного и записать координаты в ячейку A1 и A2 клеток.

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

Range("A2").Value = Mid(text, posLong + 11, 5)
  1. Тест программы.

Результат:

Read Data from Text File Result