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



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

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

他们是否有一种保存到机器桌面的方式(编码方式),而不必指定单个用户(这需要我维护6个不同的工作簿文件)?

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

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

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

Public Sub SaveToDesktop()
    ThisWorkbook.SaveAs Filename:="C:UsersPublicDesktop" & 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

下一点我将文件保存为PDF,但可以更改以适合

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 & "DesktopMyFileName.pdf", Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
    True
End Sub

最新更新