【问题标题】:Macro to export Excel Doc as PDF for all Users为所有用户将 Excel Doc 导出为 PDF 的宏
【发布时间】:2018-05-19 19:41:47
【问题描述】:

我需要创建一个宏,将 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

我认为问题在于它保存到的目录(在此代码在文件路径中显示“公共”的情况下,我已从最初填充的用户名更改了该目录)。

有谁知道指定通用路径以将此文档另存为 PDF 到任何用户桌面的方法?

【问题讨论】:

    标签: vba excel pdf


    【解决方案1】:

    使用.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:

    • 所有用户桌面
    • AllUsersStartMenu
    • 所有用户程序
    • AllUsersStartup
    • 桌面
    • 收藏夹
    • 字体
    • 我的文档
    • 网罩
    • 打印罩
    • 程序
    • 最近
    • 发送至
    • 开始菜单
    • 启动
    • 模板

    如果请求的文件夹 (strFolderName) 不可用,SpecialFolders 属性将返回一个空字符串。例如,Windows 95 没有 AllUsersDesktop 文件夹,如果 strFolderName 是 AllUsersDesktop 则返回空字符串。


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

    【讨论】:

      【解决方案2】:

      您可以使用环境变量。 %USERPROFILE%\Desktop 在这种情况下应该可以工作。

      这里是环境变量列表。 https://en.wikipedia.org/wiki/Environment_variable#Default_Values

      使用 VBA 访问环境变量:Environ Function code samples for VBA

      在 VBA 中,您可以将其翻译为 Environ("USERPROFILE") & "\Desktop" 这是未经测试的,因为我没有使用 Windows。

      【讨论】:

      • 这可行,但你能告诉我如何在上面的行中给出文件名
      • 只需像往常一样将其添加到路径中。例如。 "\Desktop\your_file.pdf"
      【解决方案3】:

      我尚未对此进行测试,但根据您的尝试:

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

      在代码的导出部分中,将 filename:= blah blah 替换为 Filename:=url

      【讨论】:

        猜你喜欢
        • 2017-12-12
        • 2021-07-09
        • 1970-01-01
        • 1970-01-01
        • 2016-01-30
        • 1970-01-01
        • 1970-01-01
        • 2017-08-31
        • 1970-01-01
        相关资源
        最近更新 更多