Экспорт и импорт данных
В данном разделе мы рассмотрим еще один способ экспортирования данных в текстовый файл, а также импорт данных из текстового файла.
Для решения поставленных задач нам потребуются два макроса: один – для экспорта данных, другой – для их импорта. Чтобы создать эти макросы, напишем в стандартном модуле редактора VBA код, который представлен в листинге 3.56.
Листинг 3.56. Экспорт и импорт данных
Sub ExportAsText()
Dim lngRow As Long
Dim intCol As Integer
' Открытие файла для сохранения
Open «C:primer.txt» For Output As #1
' Запись выделенной части таблицы в файл (построчно)
For lngRow = 1 To Selection.Rows.Count
' Запись содержимого всех столбцов строки lngRow
For intCol = 1 To Selection.Columns.Count
Write #1, Selection.Cells(lngRow, intCol).Value;
Next intCol
' Начнем новую строку в файле
Print #1, ""
Next lngRow
' Не забываем закрыть файл
Close #1
End Sub
Sub ImportText()
Dim strLine As String ' Одна строка файла
Dim strCurChar As String * 1 ' Анализируемый символ строки
файла
Dim strValue As String ' Значение для записи в ячейку
Dim lngRow As Long ' Номер текущей строки
Dim intCol As Integer ' Номер текущего столбца
Dim i As Integer
' Открытие импортируемого файла
Open «C:primer.txt» For Input As #1
' Считываем все строки файла и записываем данные, разделенные _
запятой, в ячейки таблицы (начиная с текущей ячейки)
Do Until EOF(1)
' Считываем строку из файла
Line Input #1, strLine
' Разбираем считанную строку
For i = 1 To Len(strLine)
strCurChar = Mid(strLine, i, 1)
If strCurChar = "," Then
' Найден разделитель столбцов – запятая. Запишем _
сформированное значение в ячейку
ActiveCell.Offset(lngRow, intCol) = strValue
intCol = intCol + 1
strValue = ""
ElseIf i = Len(strLine) Then
' Конец строки – запишем в таблицу последнее _
значение в строке (перед этим дополним его последним _
символом строки, кроме кавычки)
If strCurChar <> Chr(34) Then
strValue = strValue & strCurChar
End If
' Запись в таблицу
ActiveCell.Offset(lngRow, intCol) = strValue
strValue = ""
ElseIf strCurChar <> Chr(34) Then
' Добавление символа в формируемое значение ячейки _
(кавычки игнорируются)
strValue = strValue & strCurChar
End If
Next i
' Переход к новой строке таблицы
intCol = 0
lngRow = lngRow + 1
Loop
' Закрываем файл
Close #1
End Sub
После того как данный код написан, в окне выбора макросов появятся макросы ExportAsText и ImportText. В соответствии в кодом макроса экспорт данных будет осуществляться в файл primer.txt, который будет создан на диске С:. Из этого же файла будут импортированы данные при выполнении макроса ImportText.
Перед запуском макроса ExportAsText необходимо выделить диапазон, данные которого следует экспортировать в текстовый файл. Импортируемые данные будут помещены в то место рабочего листа, в котором установлен курсор (при этом ячейка с курсором будет являться левой верхней ячейкой импортированного диапазона).
В текстовом файле столбцы обозначаются символом, (запятая).