1

Я пытаюсь проверить, существует каталог или нет.

Я попробовал следующее ...

Private Sub Workbook_Open()
 If ReportFolderStatus("\VBAProjectFiles") Then
        MsgBox "Folder exists!"
    Else
        MsgBox "Folder does not exist!"
    End If
End Sub

Function ReportFolderStatus(fldr) As Boolean
   Dim fso
   Set fso = CreateObject("Scripting.FileSystemObject")
   If (fso.FolderExists(fldr)) Then
      ReportFolderStatus = True
   Else
      ReportFolderStatus = False
   End If
End Function

но я получаю всегда "Папка не существует".

Структура папок:

--folder#1
 |--folder#2
    |--VBAProjectFiles
    |excel.xlsm

1 ответ1

2

Я верю, что вы хотите использовать

ThisWorkbook.Path

Это даст вам относительный путь

Если это не сработает, попробуйте ActiveWorkbook.Path или App.Path

If Dir(ThisWorkbook.Path & "\VBAProjectFiles", vbDirectory) = "" Then

Оригинальный ответ об Абсолютном пути (ОП вопрос изменился с абсолютного пути на относительный путь, но я чувствую, что это остается полезным)

Вам может быть лучше поставить полный путь

if FileExist("c:\VBAProjectFiles\myfile.xml") Then

Однако, несмотря на проверку FileExist впечатление, что вы на самом деле ищете наличие каталога. Вы можете использовать либо:

If Dir("C:\VBAProjectFiles", vbDirectory) = "" Then

или же

If Len(Dir("C:\VBAProjectFiles", vbDirectory)) = 0 Then

или же

If GetAttr("C:\VBAProjectFiles") And vbDirectory) = vbDirectory then

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .