Я вхожу в каталог папок и просматриваю папки, чтобы получить конкретные данные каждый раз, когда я нахожу конкретный файл.Проверьте, существует ли файл с использованием VBA или Excel без «DIR»
Если я открою файл, который я ищу в папке, в которой он отсутствует, я получаю ошибку отладки. Поэтому я должен проверить каталог, чтобы узнать, есть ли файл, и не пытаться его открыть, если это не так (это нормально, не все папки имеют файл темы).
Функция DIR - это любимая функция проверки присутствия файла, но поскольку я использую функцию DIR для перехода по папкам, мое тестирование показало, что я не могу использовать DIR для проверки определенного файла в в середине моего кода, потому что VBA запутывается, когда я был в шаге по папкам.
Как я могу проверить наличие известного имени файла без использования DIR? Я пробовал функцию я нашел:
Функция FileExists (FullFileName As String) As Boolean FileExists = VBA.Len (VBA.Dir (FullFileName))> 0 End Function
К сожалению, я не понял, как на самом деле написать это в СУБ, который я создаю. Образец, который я нашел (и другие подобные), но обычно не уточняет, что необходимо для начинающего новичка. В этом случае не знаю, что будет в LEN и DIR, и почему fullfilename понадобится в том, что выглядит как оператор DIM (из-за As Boolean). Я также обнаружил, что если я попытаюсь поместить эту функцию в свою подпрограмму, VBA просто не доволен.
Что я могу попробовать, это сработает? Мне просто нужен оператор IF вокруг функции, которая скажет мне, существует ли файл или нет.
До тех пор, пока вы не нужно работать на Mac вы можете использовать Scripting.FileSystemObject https://msdn.microsoft.com/en-us/library/x23stk5t(v=vs. 84) .aspx –
Тим, спасибо за вашу рекомендацию. Я вытащил то, что было, но не получил ожидаемых результатов, поэтому я немного улучшил скрипт, чтобы попытаться помочь: Sub FileExistence() Dim fso Dim Folder As String Папка = Dir ("c: \ users \" , vbDirectory) MsgBox Папка Set FSO = CreateObject ("Scripting.FileSystemObject") Если (fso.FileExists ("C: \ Users \")) Тогда MsgBox "" существует Else MsgBox "не существует". Конец Если Конец Sub – Excelling
К сожалению, это новое. Тим, спасибо за ссылку, но это не дает мне ожидаемых результатов.Я добавил DIR & MSGBOX подтвердить каталог существует: Sub Test_File_Existence() Dim FSO Dim Folder As String Folder = Dir ("C: \ Users \", vbDirectory) MsgBox Папка Set FSO = CreateObject ("Scripting .FileSystemObject ") Если (fso.FileExists (" c: \ users \ ")) Затем MsgBox" существует. " Else MsgBox "не существует". End If End Sub У меня разные результаты. DIR дает точку, первую директорию в пользователях; IF имеет msgbox сказать, что файл не существует. FSO терпит неудачу. ??? – Excelling