Vba 在任何用户';s桌面目录(如果不存在)
我有一个文件,当按下按钮时,它会打开一个特定的文件夹。我将向其他用户分发此文件,以便代码必须知道如何查看正确的目录:Vba 在任何用户';s桌面目录(如果不存在),vba,excel,excel-2007,create-directory,Vba,Excel,Excel 2007,Create Directory,我有一个文件,当按下按钮时,它会打开一个特定的文件夹。我将向其他用户分发此文件,以便代码必须知道如何查看正确的目录: 查看文件夹是否已存在,如果存在,请打开文件夹 如果文件夹不存在,请创建该文件夹,并在创建后将其打开 到目前为止,以下是我的代码的相关部分: If Dir("C:\Users\myUsername\Desktop\sampleFolder", vbDirectory) = "" Then MkDir "C:\Users\myUsername\Desktop\sa
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\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu\Desktop”中显示的用户的实际用户名
这是正确的方法吗?如果我在代码中插入自己的用户名,代码就可以工作,但我无法找到自动获取用户名的方法,因此代码对最终用户来说很容易
我的主要问题是,我不知道如何获取文件路径“C:\Users\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu\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)
试一试
为什么在声明过程中变量末尾会出现
$
?我以前从未见过这种情况。@kyle是As String
:)++nice的缩写,@kyle seeEnviron
返回一个变量
,它在分配字符串变量时会产生隐式转换,因此应该首选返回Environ$
函数的字符串。另外,硬编码C:\Users`不是一个好主意(如果操作系统安装在D:drive上怎么办?)。参见[Om3r的答案](http://stackoverflow.com/a/39089389/1188513)它使用
USERPROFILE`变量,返回当前用户profile.Ugh的正确驱动器和位置。很抱歉,我完全弄乱了背景标记的格式。。。而且注意得太晚了:(
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