Sub FileSearch()
Dim strFileName As String
Dim strFolder As String
Dim strFullPath As String
' Задание имени папки для поиска
strFolder = InputBox(«Определите папку:»)
If strFolder = "" Then Exit Sub
' Задание имена файла для поиска
strFileName = Application.InputBox(«Введите имя файла:»)
If strFileName = "" Then Exit Sub
' При необходимости дополняем имя папки "\"
If Right(strFolder, 1) <> "\" Then strFolder = strFolder & "\"
' Полный путь файла
strFullPath = strFolder & strFileName
' Вывод окна с отчетом о поиске средствами VBA
MsgBox «Использование команды VBA...» & vbCrLf & vbCrLf & _
dhSearchVBA(strFullPath), vbInformation, strFullPath
' Вывод окна с отчетом о поиске средствами объекта _
FileSystemObject
MsgBox «Использование объекта FileSystemObject...» & vbCrLf
& _
vbCrLf & dhSearchFileSystemObject(strFullPath), vbInformation, _
strFullPath
End Sub
Function dhSearchVBA(varFullPath As Variant) As Boolean
' Использование команды VBA
dhSearchVBA = Dir(varFullPath) <> ""
End Function
Function dhSearchFileSystemObject(varFullPath As Variant) As
Boolean
Dim objFSObject As Object
' Использование объекта FileSystemObject
Set objFSObject = CreateObject(«Scripting.FileSystemObject»)
dhSearchFileSystemObject = objFSObject.FileExists(varFullPath)
End Function
В результате запуска макроса открывается окно, в котором указывается папка для поиска, а затем (после нажатия кнопки ОК) – имя искомого файла. В данном примере для поиска файла используются два разных метода. После ввода имени папки и файла они будут применены поочередно, и в каждом случае будет показан отдельный результат: если файл обнаружен по указанному пути, то отобразится значение True, в противном случае – False.
В результате написания приведенного выше кода, помимо макроса FileSearch, будут созданы три пользовательские функции (их можно найти в категории Определенные пользователем). С помощью этих функций можно отдельно использовать каждый из методов, которые автоматически применяются при выполнении макроса. В данном случае в качестве аргументов функций указываются ячейки, содержащие путь к искомому файлу. Если файл обнаружен по указанному пути, то в активной ячейке отобразится значение ИСТИНА, в противном случае – ЛОЖЬ.
Автоматизация удаления файлов
Используя средства VBA, можно удалять как отдельные файлы, так и группы файлов в соответствии с заданными параметрами.
Чтобы удалить отдельный файл, можно воспользоваться следующим макросом (листинг 3.49).
Sub DeleteFile()
Kill «C:\Документы\primer.xls»
End Sub
В результате выполнения данного макроса будет удален файл primer.xls, расположенный по адресу С: \ Документы.
Для удаления группы файлов с определенным расширением можно использовать следующий макрос (листинг 3.50).
Sub DeleteFiles()
' Удаление всех файлов с расширением XLS из заданной папки
Kill «C:\Документы\» & «*.xls»
End Sub
После выполнения этого макроса из папки Документы на диске С: будут удалены все файлы, имеющие расширение XLS.
При удалении файлов с помощью приведенных макросов следует учитывать, что они не помещаются в Корзину, а окончательно удаляются с жесткого диска.
Перечень имен листов в виде гиперссылок