VBA:如何将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
链接地址: http://www.djcxy.com/p/45461.html
上一篇: VBA: How to save Excel Workbook to Desktop regardless of user?