【问题标题】:vba to select specific sheets and save/export each PDF created to diferent foldersvba 选择特定工作表并将每个 PDF 创建保存/导出到不同的文件夹
【发布时间】:2021-04-17 15:17:58
【问题描述】:

来自巴西的问候!

我已经用尽了我有限的知识并搜索了YT和各种论坛,但没有任何运气。 (我不是程序员或类似的东西)。让我们看看是否有一个愿意的灵魂可以帮助我。

我有一个包含多个电子表格的工作簿(基本上,它们是各种产品的数据源和其他价格表)。我正在尝试做的是将它们中的每一个以 PDF 格式导出到不同的文件夹。我设法将它们导出到一个文件夹,但这最终不是我想要的。我需要每个文件去一个特定的文件夹。我还设法让每个 PDF 文件名以从另一个电子表格源中提取的“月/年”结尾,但它只为一个电子表格完成这项工作,对于其他电子表格,它只重命名月/年部分,而不是我想要的整个文件名。

帮助! 这是我正在使用的源代码:


Dim fName As String
With Worksheets("Sheet4")
    fName = ThisWorkbook.Worksheets("Sheet4").Range("G1").Value & ThisWorkbook.Worksheets("Sheet4").Range("I1").Value

End With
Worksheets("Sheet1").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\Users\fred_\" & "TABELA" & Range("L2").Value & fName, Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True

Worksheets("Sheet2").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\Users\John_\" & fName, Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True

Worksheets("Sheet3").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\Users\Sally_\" & fName, Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True

End Sub

我也尝试过这段代码,但我不知道如何更改编码以将每个 PDF 保存在各种特定文件夹中:

Sub ExportToPDFs()
' PDF Export Macro
' C:\*needs to go to diferent folders*
' Sheets(Array("Sheet1","Sheet2","Sheet3")).Select

Dim nm As String
Dim ws As Worksheet
Dim i As Variant, sheets_to_select As Variant

sheets_to_select = Array("Sheet1", "Sheet2", "Sheet3")

For Each i In sheets_to_select
   ThisWorkbook.Sheets(i).ExportAsFixedFormat Type:=xlTypePDF, _
      Filename:="C:\*diferent folders*\" & "Price List" & i & ThisWorkbook.Sheets("Sheet1").Range("G4").Value & ".pdf", _
      Quality:=xlQualityStandard, IncludeDocProperties:=True, _
      IgnorePrintAreas:=False, OpenAfterPublish:=True

Next i

End Sub

我做错了什么?顺便说一句,对生锈的英语感到抱歉!提前感谢您的帮助!

【问题讨论】:

  • 您需要在 ExportAsFixed 语句的 FileName 参数中指定输出文件夹。
  • 谢谢尼古拉斯。你在看第一个代码吗?如您所见,它为创建的每个 PDF 都有一个特定的文件夹。它完成了将每个 PDF 保存/导出到其文件夹的工作,但由于某种原因,文件的名称对于创建的所有 PDF 都是相同的,除了我在运行宏时所在的页面。我不知道为什么它没有出现在我拥有的其他表格上。

标签: excel vba pdf


【解决方案1】:

为各个文件夹名称使用另一个数组

Sub ExportToPDFs()
    ' PDF Export Macro
    ' C:\*needs to go to diferent folders*
    ' Sheets(Array("Sheet1","Sheet2","Sheet3")).Select
    
    Const ROOT = "C:\temp\so\"

    Dim wb As Workbook, ws As Worksheet
    Dim i As Integer, arName As Variant, arFolder As Variant
    Dim sFolder As String, sFilename As String, sMthYr As String

    Set wb = ThisWorkbook
    
    arName = Array("Sheet1", "Sheet2", "Sheet3")
    arFolder = Array("FolderA", "FolderB", "FolderC")
    
    sMthYr = wb.Sheets("Sheet1").Range("G4")
    sMthYr = Replace(sMthYr, "/", "_") ' avoid / in filename

    For i = 0 To UBound(arName)
       
        Set ws = wb.Sheets(arName(i))
        sFolder = ROOT & arFolder(i) & "\"
        sFilename = "Price_List_" & arName(i) & "_" & sMthYr & ".pdf"
        
        ws.ExportAsFixedFormat Type:=xlTypePDF, _
           Filename:=sFolder & sFilename, _
           Quality:=xlQualityStandard, IncludeDocProperties:=True, _
           IgnorePrintAreas:=False ', OpenAfterPublish:=True
    
    Next i
    MsgBox i & " Sheets exported to " & ROOT
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-07
    • 1970-01-01
    • 1970-01-01
    • 2014-01-12
    • 2016-07-23
    相关资源
    最近更新 更多