在任何用户的桌面目录中创建一个文件夹(如果它不存在)

时间:2016-08-22 21:39:57

标签: excel vba excel-vba excel-2007 create-directory

我有一个文件,其中包括按下按钮时打开特定文件夹。我将把这个文件分发给其他用户,因此代码必须知道查看正确的目录:

  1. 查看该文件夹是否已存在,如果存在则打开文件夹
  2. 创建文件夹(如果该文件夹尚不存在),并在创建
  3. 后将其打开

    到目前为止,这是我的代码的相关部分:

    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
    

    我的主要问题是我无法弄清楚如何获取用户的实际用户名,该用户名将出现在文件路径“C:\ Users __________ \ Desktop”中

    这甚至是正确的方法吗?如果我在代码中插入自己的用户名,代码就可以工作,但我无法找到自动获取用户名的方法,因此最终用户的代码很容易。

2 个答案:

答案 0 :(得分: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 :(得分: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)