Как избавиться от VBA Dir Ошибка 52 Bad File Name - PullRequest
0 голосов
/ 28 марта 2020

Я не могу l oop просмотреть мои файлы в указанной папке из-за ошибки 52 при использовании оператора DIR. Контекст: в предыдущем подпункте пользователь создает папку и файлы в ней, имена которых соответствуют выбранному месяцу, например, если пользователь выбирает «Март», папка будет называться «03.2020 Март» и все файлы в ней будут выглядеть так: «03.2020 Март Франция "" 03.2020 Март Германия "et c.

В подпункте ниже я хочу l oop через все эти файлы, чтобы вставить отфильтрованный набор данных, основанный на выбранной стране. Я использовал DIR с дикими персонажами. И вот моя проблема - при попытке запустить оператор DIR я сталкиваюсь с этой ошибкой («неверное имя файла или номер»). Я попытался извлечь только имя папки, также с дикими символами - это сработало, и я получил фактическое имя папки в Debug.Print. Поэтому я предполагаю, что проблема лежит где-то в самом имени файла, но я не могу понять это.

В окне просмотра строка полного пути после первого l oop равна:

"C: \ Users \ A135604 \ Desktop \ Projekt * March * Austria.xls *"

Не могли бы вы помочь?

Sub CopyToFNOLCountrySheets()

Dim FilterRegion As Range
Dim country(1 To 10) As String
Dim i As Byte
Dim r As Byte
Dim reportmonth As String `March
Dim folderpath As String
Dim countryfile As String
Dim fullpath As String  
Dim filetoopen As String

reportmonth = ThisWorkbook.Sheets("Cockpit").Range("A16").Value
folderpath = "C:\Users\A135604\Desktop\Projekt\" & "*" & reportmonth

Set fnwb = Workbooks("FNOLDataSource")
Set fnws = fnwb.Worksheets("FNOLAllData")
Set FilterRegion = fnws.Range("A1").CurrentRegion

For i = 1 To 10
    country(i) = ThisWorkbook.Sheets("Cockpit").Cells(i + 17, 1)
    countryfile = "\*" & country(i) & ".xls*"
    fullpath = folderpath & countryfile
    filetoopen= Dir(fullpath, vbDirectory)
    Debug.Print filetoopen
Next i

1 Ответ

1 голос
/ 28 марта 2020

Измените свой код следующим образом

folderpath = "C:\Users\A135604\Desktop\Projekt\" & "*" & reportmonth
folderpath = Dir(folderpath,vbDirectory)
folderpath = "C:\Users\A135604\Desktop\Projekt\" & folderpath

Это даст вам правильное имя каталога на этом шаге.

В l oop вам нужно изменить строку для filetoopen

filetoopen = Dir(fullpath, vbNormal)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...