宏可以为所有用户导出Excel Doc as PDF

时间:2017-12-06 01:52:37

标签: excel vba excel-vba pdf

我需要创建一个宏,将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保存到任何用户桌面的通用路径?

3 个答案:

答案 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,则返回空字符串。

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

答案 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