Проверка наличия файла по указанному пути

We use cookies. Read the Privacy and Cookie Policy

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

Листинг 3.46. Проверка наличия файла (вариант 1)

Sub VerifyFileLocation()

Dim strFileName As String

Dim strFileTitle As String

' Имя и путь искомого файла

strFileTitle = «primer.xls»

strFileName = «C:Документыprimer.xls»

' Проверка наличия файла (функция Dir возвращает пустую _

строку, если по указанному пути файл обнаружить не удалось)

If Dir(strFileName) <> "" Then

MsgBox "Файл " & strFileTitle & « найден»

Else

MsgBox "Файл " & strFileTitle & « не найден»

End If

End Sub

Результатом выполнения данного макроса является выводимое на экран окно, в котором сообщается, существует данный файл по указанному адресу или нет (рис. 3.14).

Рис. 3.14. Результат поиска файла

Для такой же проверки можно применить макрос, код которого приведен в листинге 3.47 (путь и название файла условны).

Листинг 3.47. Проверка наличия файла (вариант 2)

Sub VerifyFileLocation1()

Dim strFileName As String

' Имя искомого файла

strFileName = «C:Документыprimer.xls»

' Проверка наличия файла (функция Dir возвращает пустую _

строку, если по указанному пути файл обнаружить не удалось)

If Dir(strFileName) <> "" Then

MsgBox "Файл " & strFileName & « найден»

Else

MsgBox "Файл " & strFileName & « не найден»

End If

End Sub

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

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

Листинг 3.48. Поиск нужного файла

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, будут созданы три пользовательские функции (их можно найти в категории Определенные пользователем). С помощью этих функций можно отдельно использовать каждый из методов, которые автоматически применяются при выполнении макроса. В данном случае в качестве аргументов функций указываются ячейки, содержащие путь к искомому файлу. Если файл обнаружен по указанному пути, то в активной ячейке отобразится значение ИСТИНА, в противном случае – ЛОЖЬ.