Как использовать MkDir с переменным путем для разных пользователей - PullRequest
0 голосов
/ 11 марта 2019

У меня есть код, где вы вводите информацию в списке Excel. Я хочу иметь возможность создать папку - я использую код ниже. Проблема в том, что я хочу, чтобы это работало для всех моих коллег (не только для меня). Может кто-нибудь, пожалуйста, помогите найти, где я получаю ошибку? Обратите внимание, что это частичный код, ошибка происходит в строке MkDir. Заранее спасибо за помощь!

Dim Startupfolder As String
Startupfolder = Startup_Name.Value

MkDir Environ$("Userprofile") & "\nc Dropbox\investment oportunities\ & "Startupfolder"

Ответы [ 2 ]

3 голосов
/ 11 марта 2019

Проблема в том, куда вы помещаете свои цитаты. Попробуйте это:

MkDir Environ$("Userprofile") & "\nc Dropbox\investment oportunities\" & Startupfolder

Startupfolder является переменной, поэтому вы не хотите, чтобы в кавычках

Подробнее
Если ваша папка помещена в еще не существующую папку, она потерпит неудачу. Он также потерпит неудачу, если он уже существует.

Попробуйте вместо этого:

Sub MakeDir()
    CreateFolder Environ$("Userprofile") & "\nc Dropbox"
    CreateFolder Environ$("Userprofile") & "\nc Dropbox\investment oportunities"
    CreateFolder Environ$("Userprofile") & "\nc Dropbox\investment oportunities\" & Startupfolder
End Sub

Sub CreateFolder(Folder)
    If Len(Dir(Folder, vbDirectory)) = 0 Then
        MkDir Folder
    End If
End Sub
2 голосов
/ 11 марта 2019

Я бы использовал такой вызов API

Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" ( _
  ByVal lpPath As String) As Long

и тогда вы можете назвать это так

    MakeSureDirectoryPathExists Environ$("Userprofile") & _
         "\nc Dropbox\investment oportunities\" & Startupfolder & "\"

Для документации смотрите здесь или здесь . Важно, как указано в комментариях

Если последний компонент пути - это каталог, а не имя файла, строка должна заканчиваться символом обратной косой черты.

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