Excel VBA 转到文件夹并将所有 Excel 文档另存为单独的 PDF 文件

Posted

技术标签:

【中文标题】Excel VBA 转到文件夹并将所有 Excel 文档另存为单独的 PDF 文件【英文标题】:Excel VBA to go to a folder and save all Excel Docs as seperare PDF files 【发布时间】:2018-11-14 07:20:47 【问题描述】:

我一直在编写一些代码,但似乎无法让它工作..如果我说实话,我认为我还差得很远..

我想在 Excel 文档中编写一个按钮以转到文件夹,即 D:\Work\

里面有很多 Excel 电子表格,每个人都保存为单独的 PDF 文档?

提前致谢

【问题讨论】:

您能否向我们展示您目前的成果,并让我们知道绊脚石在哪里? 将其分解为单个任务,并为每个任务搜索现有答案和示例。例如:How to list all files in folder 和 How to save excel file as PDF。 【参考方案1】:

Loop through all files 下面的代码,然后是save all worksheets with in a workbook as PDF。我已经对代码进行了注释以帮助您理解它。

Option Explicit

Sub Loop_Dir_for_Excel_Workbooks()
    Dim strWorkbook As String
    Dim wbktoExport As Workbook
    Dim strSourceExcelLocation As String

    strSourceExcelLocation = "D:\Work\XLS\"

    'Search all Excel files in the directory with .xls, .xlsx, xlsm extensions
    strWorkbook = Dir(strSourceExcelLocation & "*.xls*")

    Do While Len(strWorkbook) > 0
        'Open the workbook
        wbktoExport = Workbooks.Open(strWorkbook)

        'Export all sheets as single PDF
        Call Export_Excel_as_PDF(wbktoExport)

        'Get next workbook
        strWorkbook = Dir

        'Close Excel workbook without making changes
        wbktoExport.Close False
    Loop
End Sub

Sub Export_Excel_as_PDF(ByRef wbk As Workbook)
    Dim strTargetPDFLocation As String

    strTargetPDFLocation = "D:\Work\PDF\"
    'Select all worksheets in the opened workbook
    wbk.Sheets.Select

    'Activate first worksheet
    wbk.Sheets(1).Activate

    'Export as PDF
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        strTargetPDFLocation & wbk.Name & ".pdf" _
        , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
        :=False, OpenAfterPublish:=False

End Sub

【讨论】:

以上是关于Excel VBA 转到文件夹并将所有 Excel 文档另存为单独的 PDF 文件的主要内容,如果未能解决你的问题,请参考以下文章

从 pdf 中提取表格(到 excel),pref。带 vba

在所有工作表中自动打开Excel文件到单元格A1(使用VBA)

为多个选定的 Excel 文件运行 vba

Excel VBA:在 Word 文件中生成页脚

从excel VBA转到word doc中的特定行

VBA从文件夹中的所有文件复制工作表并将其复制到主控