2016-08-22 25 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請注意如何獲取用戶的實際用戶名,該用戶名將出現在文件路徑「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:\用戶__________ \桌面」用戶的實際用戶名

一般來說,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參見[Declaring Variables](https://stackoverflow.com/documentation/vba/877/declaring-variables#t=20160822220156988865) – 0m3r

相關問題