macros将Excel Doc导出为所有用户的PDF
我需要创build一个macros,将Excel文档保存为PDF文件到任何用户的桌面(即多人将使用此文档/macros)。
这里是我迄今为止的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
我认为问题在于它保存的目录(在这个代码在文件path中显示“公开”的情况下,我已经从我的用户名开始改变了这个)。
有没有人知道一种方法来指定一个通用的path,将这个文档保存为PDF到任何用户的桌面?
你可以使用环境variables。 %USERPROFILE%\Desktop
应该在这个实例中工作。
这是一个环境variables列表。 https://en.wikipedia.org/wiki/Environment_variable#Default_Values
使用VBA访问环境variables: Environ VBA的function代码示例
在VBA中,你可以将它翻译成Environ("USERPROFILE") & "\Desktop"
这是未经testing的,因为我不使用Windows。
使用.specialfolders("Desktop")
保存到桌面。 设置为一个stringvariables并添加path分隔符
例
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
以下特殊文件夹可用:
AllUsersDesktop
AllUsersStartMenu
AllUsersPrograms
AllUsersStartup
桌面
最爱
字体
我的文件
NETHOOD
PRINTHOOD
程式
最近
发给
开始菜单
启动
模板
如果请求的文件夹(strFolderName)不可用,则SpecialFolders属性将返回一个空string。 例如,Windows 95没有AllUsersDesktop文件夹,如果strFolderName是AllUsersDesktop,则返回一个空string。
我没有testing这个,但根据你给的尝试:
Dim url As String url = Application.DefaultFilePath & "\" & ActiveWorkbook.Name & ".xls"
在你的代码的导出部分replace文件名:=等等等等到文件名:= url