К аналогичному результату приведет также использование такого макроса (листинг 3.53). В данном случае удаление пустых строк происходит снизу вверх. Это позволяет упростить алгоритм, так как не нужно учитывать сдвиг данных вверх при удалении строк.
Sub DeleteEmptyStrings1()
Dim intRow As Integer
Dim intLastRow As Integer
' Получение номера последней используемой строки
intLastRow = ActiveSheet.UsedRange.Row + _
ActiveSheet.UsedRange.Rows.Count – 1
' Удаление пустых строк
For intRow = intLastRow To 1 Step -1
If ActiveSheet.Rows(intRow).Text = "" Then
ActiveSheet.Rows(intRow).Delete
End If
Next intRow
End Sub
Для удобства работы можно создать кнопку и привязать к ней какой-либо из приведенных макросов – тогда удаление пустых строк будет производиться при нажатии этой кнопки.
Запись текущих данных в текстовый файл
С помощью несложного трюка можно быстро записать все данные, хранящиеся на текущем рабочем листе, в текстовый файл. В листинге 3.54 приведен код макроса, который позволяет решить эту задачу.
Sub SaveAsText()
Dim cell As Range
' Открытие файла для сохранения (имя файла соответствует
имени _
рабочей книги, но отличается расширением – TXT)
Open ThisWorkbook.Path & "\" & ThisWorkbook.Name & «.txt» _
For Output As #1
' Запись содержимого заполненных ячеек таблицы в файл
For Each cell In ActiveSheet.UsedRange
If Not IsEmpty(cell) Then
Print #1, cell.Address, cell.Formula
End If
Next
' Не забываем закрывать файл
Close #1
End Sub
К аналогичному результату приведет использование такого макроса (он отличается тем, что учитывает национальные настройки) (листинг 3.55).
Sub SaveAsText1()
Dim cell As Range
' Открытие файла для сохранения (имя файла соответствует
имени _
рабочей книги, но отличается расширением – TXT)
Open ThisWorkbook.Path & "\" & ThisWorkbook.Name & «.txt» _
For Output As #1
' Запись содержимого заполненных ячеек таблицы в файл
For Each cell In ActiveSheet.UsedRange
If Not IsEmpty(cell) Then
Print #1, cell.Address, cell.FormulaLocal
End If
Next
' Не забываем закрывать файл
Close #1
End Sub
В результате выполнения любого из указанных макросов будет создан текстовый файл, помещенный в тот же каталог, в котором находится текущая рабочая книга. Имя файла формируется следующим образом: если текущий файл называется Primer.xls, то имя созданного на его основе текстового файла будет Primer.xls.txt. В этом файле, помимо хранящихся на рабочем листе данных, содержатся координаты ячеек, в которых расположены эти данные.
Экспорт и импорт данных
В данном разделе мы рассмотрим еще один способ экспортирования данных в текстовый файл, а также импорт данных из текстового файла.
Для решения поставленных задач нам потребуются два макроса: один – для экспорта данных, другой – для их импорта. Чтобы создать эти макросы, напишем в стандартном модуле редактора VBA код, который представлен в листинге 3.56.
Sub ExportAsText()
Dim lngRow As Long
Dim intCol As Integer