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

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

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

4

2 回答 2

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 环境

于 2016-08-22T22:00:37.137 回答
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)
于 2016-08-22T21:44:32.013 回答