我有一个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
接下来的部分我将文件保存为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 & "\Desktop\MyFileName.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True
End Sub
GetUserID()
返回用户的登录名(但在某些情况下,用户配置文件文件夹可能不叫同样的名称)。 - CrazyTim
FileName-Date
的文件夹中。你知道怎么获取系统用户名以使文件名更加独特吗?例如FileName-User-Date.xlsm
。 - Analytic LunaticEnviron("username")
- SWa