2016-10-31 4 views
1

Я хочу создать папку по адресу, который хранится в ячейке B6. Адрес: H: \ jpDesk \ Desktop \ Test ProjectExcel VBA MkDir Ошибка времени выполнения

Sub SetUpLocalFolder() 

Workbooks("Robot Model.xlsm").Activate 
LocalPath = ActiveWorkbook.Worksheets("Preparation").Range("B6").Value 
Debug.Print LocalPath 
If Right(LocalPath, 1) <> "\" Then LocalPath = LocalPath & "\" 

'check if the folder is already created 
If Len(Dir(""" & LocalPath & """, vbDirectory)) = 0 Then 
    MkDir """ & LocalPath & """ 'Error shows here 
    MsgBox ("The local folder is successfully created.") 
End If 

End Sub 

ошибка показывает "Ошибка выполнения '76' Путь не найден.", Но Debug.Print показывает правильный адрес. Если я изменю код на MkDir «H: \ jpDesk \ Desktop \ Test Project», тогда все будет работать. Может кто-нибудь, пожалуйста, дайте мне знать, почему?

+2

Нет необходимости «»» – Slai

+0

я настоятельно рекомендую использовать' Scripting.FileSystemObject' вместо этого -..!. Это намного надежнее, чем методы обработки файлов древнего наследия – Comintern

+0

Это верно Спасибо – vivi11130704

ответ

2

Потому что вам не нужны "" "& и &" "".

ИЛИ что папка уже существует.

+0

К сожалению, это право, но почему все онлайн-примеры имеют двойные кавычки по адресу пути. – vivi11130704

+1

@ vivi11130704 - онлайн-примеры, вероятно, говорят что-то вроде 'Dir (« C: \ Temp », vbDirectory)'. В этом случае '' C: \ Temp " является строковым литералом, который ссылается на ячейку памяти, содержащую символы 'C: \ Temp'. В вашем случае у вас есть переменная String, называемая' LocalPath', которая ссылается на ячейку памяти, содержащую символы 'C: \ Temp'. замените литерал '' C: \ Temp ''в примере своей переменной' LocalPath'. – YowE3K

+0

Я вижу, что вы говорите. – vivi11130704