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。

这里是另一个例子 https://stackoverflow.com/a/31694603/4539709

我没有testing这个,但根据你给的尝试:

 Dim url As String url = Application.DefaultFilePath & "\" & ActiveWorkbook.Name & ".xls" 

在你的代码的导出部分replace文件名:=等等等等到文件名:= url