Excel. Трюки и эффекты | страница 112



' Удаление всех файлов с расширением XLS из заданной папки

Kill «C:\Документы\» & «*.xls»

End Sub

После выполнения этого макроса из папки Документы на диске С: будут удалены все файлы, имеющие расширение XLS.

При удалении файлов с помощью приведенных макросов следует учитывать, что они не помещаются в Корзину, а окончательно удаляются с жесткого диска.

Перечень имен листов в виде гиперссылок

При необходимости можно вывести в виде списка перечень имен листов текущей рабочей книги, причем каждое имя в списке будет представлять собой гиперссылку, с помощью которой можно быстро перейти к соответствующему листу. Для этого можно воспользоваться таким макросом (листинг 3.51).

Листинг 3.51. Перечень имен рабочих листов

Sub SheetNamesAsHyperLinks()

Dim sheet As Worksheet

Dim cell As Range

With ActiveWorkbook

' Просмотр всех листов книги и создание гиперссылок на них _

на первом листе

For Each sheet In ActiveWorkbook.Worksheets

Set cell = Worksheets(1).Cells(sheet.Index, 1)

.Worksheets(1).Hyperlinks.Add Anchor:=cell, Address:="", _

SubAddress:="’" & sheet.Name & "“" & «!A1»

cell.Formula = sheet.Name

Next

End With

End Sub

Результат выполнения макроса показан на рис. 3.15 – имена рабочих листов выведены в виде списка, каждый элемент которого представляет собой гиперссылку.

Рис. 3.15. Список имен рабочих листов

Удаление пустых строк на рабочем листе

В процессе работы иногда возникает необходимость избавиться от пустых строк на рабочем листе. В большинстве случаев для решения данной задачи используются штатные средства программы. Однако при большом количестве пустых строк целесообразно воспользоваться макросом, код которого приведен в листинге 3.52.

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

Sub DeleteEmptyStrings()

Dim intLastRow As Integer ' Номер последней используемой

строки

Dim intRow As Integer ' Номер проверяемой строки

' Получение номера последней используемой строки

intLastRow = Worksheets(ActiveSheet.Index).UsedRange.Row + _

Worksheets(ActiveSheet.Index).UsedRange.Rows.Count – 1

' Счетчик устанавливается на используемую первую строку

intRow = Worksheets(ActiveSheet.Index).UsedRange.Row

' Удаление пустых строк

Do While intRow <= intLastRow

If ActiveSheet.Rows(intRow).Text = "" Then

' Удаление строки

ActiveSheet.Rows(intRow).Delete

' Данные сдвинулись вверх, поэтому номер последней _

строки уменьшился, а текущей – не изменился

intLastRow = intLastRow – 1

Else

' Текущая строка заполнена – переходим к следующей