2016-08-22 2 views
2

У меня есть файл, который, помимо прочего, открывает определенную папку при нажатии кнопки. Я буду распространять этот файл другим пользователям, так что код должен знать, чтобы посмотреть на правильный каталог на:Создайте папку в любом каталоге рабочего стола пользователя, если она не существует

  1. Смотрите, если папка уже или нет, существует, и если он существует открыть папку
  2. Создать папку если он уже не существует, и открыть его после создания

до сих пор, здесь уместен раздел моего кода:

If Dir("C:\Users\myUsername\Desktop\sampleFolder", vbDirectory) = "" Then 
      MkDir "C:\Users\myUsername\Desktop\sampleFolder" 
      retVal = Shell("explorer.exe C:\Users\myUsername\Desktop\sampleFolder", vbNormalFocus) 
    Else 
      retVal = Shell("explorer.exe C:\Users\myUsername\Desktop\sampleFolder", vbNormalFocus) 
End If 

Моя главная проблема в том, что я не могу FIGU re, как получить фактическое имя пользователя пользователя, которое появится в пути к файлу «C: \ Users __________ \ Desktop»

Это даже правильная методология? Код работает, если я вставляю свое собственное имя пользователя в код, но я не могу понять, как получить имя пользователя автоматически, чтобы код был легким для конечного пользователя.

ответ

2

Попробуйте

Public Sub EnsureDesktopFolderExists(ByVal folderName As String) 
    Dim path As String 
    path = Environ$("USERPROFILE") & "\Desktop\" & folderName 
    If Len(Dir(path, vbDirectory)) = 0 Then MkDir path 
End Sub 

VBA Environ

1

Моя главная проблема в том, что я не могу понять, как получить фактическое имя пользователя, который будет отображаться в пути к файлу «C: \ Users __________ \ Desktop»

Как правило, функция Environ должен работать (хотя есть исключения, вероятно), и вы можете уплотнить код немного, тоже:

Dim username$ 
Dim myFolder$ 
username = ENVIRON("username") 
myFolder = "C:\Users\" & username & "\Desktop\sampleFolder" 

If Dir(myFolder, vbDirectory) = "" Then 
    MkDir myFolder 
End If 

retVal = Shell("explorer.exe " & myFolder, vbNormalFocus) 
+1

Почему '' 'в конце ваших переменных во время объявления? Я этого раньше не видел. – Kyle

+0

@kyle Сокращение для 'As String' :) –

+1

++ nice, @Kyle см. [Объявление переменных] (https://stackoverflow.com/documentation/vba/877/declaring-variables#t=20160822220156988865) – 0m3r

Смежные вопросы