Excel. Трюки и эффекты | страница 112
' Удаление всех файлов с расширением XLS из заданной папки
Kill «C:\Документы\» & «*.xls»
End Sub
После выполнения этого макроса из папки Документы на диске С: будут удалены все файлы, имеющие расширение XLS.
При удалении файлов с помощью приведенных макросов следует учитывать, что они не помещаются в Корзину, а окончательно удаляются с жесткого диска.
Перечень имен листов в виде гиперссылок
При необходимости можно вывести в виде списка перечень имен листов текущей рабочей книги, причем каждое имя в списке будет представлять собой гиперссылку, с помощью которой можно быстро перейти к соответствующему листу. Для этого можно воспользоваться таким макросом (листинг 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.
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
' Текущая строка заполнена – переходим к следующей