我需要创建一个宏,将Excel文件作为PDF文件保存到任何用户的桌面(即多人将使用此文档/宏)。
这是我到目前为止的VBA代码:
Sub CreatePDF()
'
' CreatePDF Macro
'
'
ChDir "C:\Users\Public\Desktop"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\Public\Desktop\QuickView Update Dec_2017.pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End Sub
我认为问题在于它保存的目录(在此代码在文件路径中显示“Public”的情况下,我已经从最初填充的用户名更改了该内容)。
有没有人知道如何指定将此文档作为PDF保存到任何用户桌面的通用路径?
答案 0 :(得分:2)
使用.specialfolders("Desktop")
保存到桌面。设置为字符串变量并添加路径分隔符
实施例
Option Explicit
Sub CreatePDF()
Dim FilePath As String
FilePath = CreateObject("WScript.Shell").specialfolders("Desktop")
Debug.Print FilePath
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
FileName:=FilePath & "\" & "QuickView Update Dec_2017.pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End Sub
The following special folders are available:
AllUsersDesktop
AllUsersStartMenu
AllUsersPrograms
AllUsersStartup
桌面
收藏夹
字体
我的文档
NETHOOD
PRINTHOOD
程序
最近
的SendTo
的StartMenu
启动
模板
如果请求的文件夹(strFolderName)不可用,则SpecialFolders属性返回空字符串。例如,Windows 95没有AllUsersDesktop文件夹,如果strFolderName是AllUsersDesktop,则返回空字符串。
答案 1 :(得分:1)
您可以使用环境变量。 %USERPROFILE%\Desktop
应该在这种情况下起作用。
这是一个环境变量列表。 https://en.wikipedia.org/wiki/Environment_variable#Default_Values
使用VBA访问环境变量:Environ Function code samples for VBA
在VBA中,您可以将其翻译为Environ("USERPROFILE") & "\Desktop"
这是未经测试的,因为我没有使用Windows。
答案 2 :(得分:0)
我没有对此进行测试,但根据您提供的内容尝试:
Dim url As String
url = Application.DefaultFilePath & "\" & ActiveWorkbook.Name & ".xls"
在代码的导出部分中将filename:= blah blah替换为Filename:= url