×
Traktatov.net » Excel. Трюки и эффекты » Читать онлайн
Страница 90 из 146 Настройки

К аналогичному результату приведет также использование такого макроса (листинг 3.53). В данном случае удаление пустых строк происходит снизу вверх. Это позволяет упростить алгоритм, так как не нужно учитывать сдвиг данных вверх при удалении строк.

Листинг 3.53. Удаление пустых строк (вариант 2)

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 приведен код макроса, который позволяет решить эту задачу.

Листинг 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).

Листинг 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.

Листинг 3.56. Экспорт и импорт данных

Sub ExportAsText()

Dim lngRow As Long

Dim intCol As Integer