如何将Excel工作簿保存到桌面而不考虑用户?

如何将Excel工作簿保存到桌面而不考虑用户?,excel,vba,Excel,Vba,我有一个Excel工作簿,在窗体按钮上单击我需要将工作簿的副本保存到用户的桌面 最初,所有内容都将放在共享网络文件夹中,但现在我有大约6个不同的用户,当他们单击按钮时,我需要将工作簿保存到他们各自的桌面上 它们是一种保存到计算机桌面而不必指定单个用户(这需要我维护6个不同的工作簿文件)的方法吗?我认为这是获取桌面路径的最可靠方法,它与用户名并不总是相同 MsgBox CreateObject("WScript.Shell").specialfolders("Desktop") 您提到过,他们每

我有一个Excel工作簿,在窗体按钮上单击我需要将工作簿的副本保存到用户的桌面

最初,所有内容都将放在共享网络文件夹中,但现在我有大约6个不同的用户,当他们单击按钮时,我需要将工作簿保存到他们各自的桌面上


它们是一种保存到计算机桌面而不必指定单个用户(这需要我维护6个不同的工作簿文件)的方法吗?

我认为这是获取桌面路径的最可靠方法,它与用户名并不总是相同

MsgBox CreateObject("WScript.Shell").specialfolders("Desktop")

您提到过,他们每个人都有自己的计算机,但是如果他们需要登录到同事的计算机,然后使用该文件,通过“C:\Users\Public\Desktop\”保存该文件将使其可用于不同的用户名

Public Sub SaveToDesktop()
    ThisWorkbook.SaveAs Filename:="C:\Users\Public\Desktop\" & ThisWorkbook.Name & "_copy", _ 
    FileFormat:=xlOpenXMLWorkbookMacroEnabled
End Sub

我不确定这是否是一个要求,但可能会有所帮助

不确定这是否仍然相关,但我使用这种方式

Public bEnableEvents As Boolean
Public bclickok As Boolean
Public booRestoreErrorChecking As Boolean   'put this at the top of the module

 Private Declare Function apiGetComputerName Lib "kernel32" Alias _
"GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Private Declare Function apiGetUserName Lib "advapi32.dll" Alias _
"GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Function GetUserID() As String
' Returns the network login name
On Error Resume Next
Dim lngLen As Long, lngX As Long
Dim strUserName As String
strUserName = String$(254, 0)
lngLen = 255
lngX = apiGetUserName(strUserName, lngLen)
If lngX <> 0 Then
    GetUserID = Left$(strUserName, lngLen - 1)
Else
    GetUserID = ""
End If
Exit Function
End Function

我没想过+1@mehow我过去只考虑过这件事,而我的不是;)在我的用户机器上运行该代码需要任何特殊的引用、文件吗?不,windows脚本运行时是标准windows安装的一部分。请使用下面的mehow技术
Environ(“username”)
,谢谢您的提示,在正常情况下肯定值得考虑。这些用户是督察,大约6人,每个人负责本州自己的区域。他们登录到另一台inspectors机器的可能性很小,可能永远也不会。这不是一种防弹的方法-您的函数
GetUserID()
返回用户登录名(但是在某些情况下,用户配置文件文件夹可能不会被称为相同的名称)
Public Sub SaveToDesktop()
Dim LoginName As String
LoginName = UCase(GetUserID)

ChDir "C:\Users\" & LoginName & "\Desktop\"
Debug.Print LoginName
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    "C:\Users\" & LoginName & "\Desktop\MyFileName.pdf", Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
    True
End Sub