如何使用 VBA 将 pdf 保存/导出到某个文件夹

Posted

技术标签:

【中文标题】如何使用 VBA 将 pdf 保存/导出到某个文件夹【英文标题】:How to save/export a pdf to a certain folder using VBA 【发布时间】:2020-11-25 02:37:49 【问题描述】:

我在 access 中创建了一个数据库,用于存储有关我的工作的数据。

我还创建了一个报告,该报告链接到该数据库中的一个表,该表由一个宏运行,该宏通过 VBA 在我的桌面上创建一个文件(导出)。现在我正在尝试更改它,以便该文件将检查目录(即桌面),如果未创建,则创建一个年份文件夹(即 2020),然后在该文件夹中检查月份名称(即一月)如果这是没有创建,然后是每个月的一天文件夹等。现在这工作正常。但是当它完成这些检查时,我正在努力让文件输出到这个位置。只是不知道如何在保留 DoCmd.OutputTo 等的同时表达它...这里有一些代码向您展示我的意思:

Function Reportmacro()
On Error GoTo Reportmacro_Err
   
    ' Check for year folder and create if needed
    If Len(Dir("H:TEST\" & Year(Date), vbDirectory)) = 0 Then
        MkDir "H:TEST\" & Year(Date)
    End If

     ' Check for month folder and create if needed
    If Len(Dir("H:TEST\" & Year(Date) & "\" & MonthName(Month(Date), False), vbDirectory)) = 0 Then
        MkDir "H:TEST\" & Year(Date) & "\" & MonthName(Month(Date), False)
    End If
    
    ' Check for day folder and create if needed
    If Len(Dir("H:TEST\" & Year(Date) & "\" & MonthName(Month(Date), False) & "\" & Day(Date), vbDirectory)) = 0 Then
        MkDir "H:TEST\" & Year(Date) & "\" & MonthName(Month(Date), False) & "\" & Day(Date)
        DoCmd.OutputTo acOutputReport, "Changeover Car Report", "PDFFormat(*.pdf)", "CCReport" & Day(Date) & "_" & Month(Date) & "_" & Year(Date) & ".pdf", False, "", , acExportQualityPrint
    End If
    
    
Reportmacro_Exit:
    Exit Function

Reportmacro_Err:
    MsgBox Error$
    Resume Reportmacro_Exit

End Function

目前它将进入“TEST”文件夹,但同样的逻辑适用。

【问题讨论】:

也许这会有所帮助:***.com/questions/41447395/… 你需要添加路径和文件名,在DoCmd.OutputTo 【参考方案1】:

试试这个,代码不变,只是在文件名后面加了文件夹路径:

Function Reportmacro()
On Error GoTo Reportmacro_Err

    Dim fPath as String
   
    ' Check for year folder and create if needed
    If Len(Dir("H:TEST\" & Year(Date), vbDirectory)) = 0 Then
        MkDir "H:TEST\" & Year(Date)
    End If

     ' Check for month folder and create if needed
    If Len(Dir("H:TEST\" & Year(Date) & "\" & MonthName(Month(Date), False), vbDirectory)) = 0 Then
        MkDir "H:TEST\" & Year(Date) & "\" & MonthName(Month(Date), False)
    End If
    
    ' Check for day folder and create if needed
    fPath = "H:TEST\" & Year(Date) & "\" & MonthName(Month(Date), False) & "\" & Day(Date)
    If Len(Dir(fPath, vbDirectory)) = 0 Then
        MkDir fPath
        DoCmd.OutputTo acOutputReport, "Changeover Car Report", "PDFFormat(*.pdf)", fPath & "\" & "CCReport" & Day(Date) & "_" & Month(Date) & "_" & Year(Date) & ".pdf", False, "", , acExportQualityPrint
    End If
    
    
Reportmacro_Exit:
    Exit Function

Reportmacro_Err:
    MsgBox Error$
    Resume Reportmacro_Exit

End Function

查看文档:https://docs.microsoft.com/en-us/office/vba/api/access.docmd.outputto

【讨论】:

非常感谢它就像一个魅力,我什至通过将我的计算机日期设置为 2021 + 随机月份来测试它 -> 创建了所有文件夹并将其与日期一起放入。 它就像一个魅力 ...然后请标记为已回答。

以上是关于如何使用 VBA 将 pdf 保存/导出到某个文件夹的主要内容,如果未能解决你的问题,请参考以下文章

如何创建一个 VBA 宏,将某个文件保存到特定目录中的所有子文件夹中?

VBA 打印为 PDF 并使用自动文件名保存

VBA MS 项目将多个自定义报告以 PDF 格式保存到位置

将范围导出为 PDF 而不保存

保存 Excel 文件并使用不同的工作表将其导出为 pdf

如何使用 VBA 从 Access 中的表单更改保存的导出路径?