首页 > 解决方案 > VBA - 多表阵列打印表

问题描述

我有几个不同的数组是工作表。我想要构建的是使此代码通过数组打印一组工作表,其中“packages_to_print”数组等于需要打印的所有相关工作表数组。如果这是不可能的,有没有办法选择多个数组进行打印?

这段代码不会给我一个错误,它只是不会将任何内容打印到 pdf 中。

这是相关的代码。(lender_package 与另一个变量相同,因为我尚未构建用于将该变量设置为数组的 case 语句)。预先感谢您的帮助。

Dim common_disclosures As Variant
Dim nh_disclosure As Variant
Dim provident_disclosures As Variant
Dim packages_to_print As Variant
Dim lender_package As Variant

common_disclosures = Array("Certification", "Responsible Use", "Security Procedures", "Acknowledgment", "FACTA Credit Score", "Anti-Steering")

nh_disclosures = Array("Loan Origination and Comp", "Rate Lock", "ECOA")
provident_disclosures = Array("MBFA")

lender_package = Array(provident_disclosures)

If subject_state <> "MA" Then
    packages_to_print = Array(common_disclosures, nh_disclosures, lender_package)
Else
    packages_to_print = Array(common_disclosures, lender_package)
End If

For j = 1 To (customerpackages * 2) 
     Worksheets(packages_to_print).Select  _ 

     ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    "C:\users\" & environ_user & "\desktop\" & borrower_array(j - 1) & " disclosures.pdf" _
    , Quality:=xlQualityMinimum, IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, OpenAfterPublish:=False
Next j

标签: arraysexcelvba

解决方案


WorkSheets(..)实际上,您在表达式中使用了数组数组。尝试加入阵列packages_to_print,它运行正常。

    If subject_state <> "MA" Then
    packages_to_print = Split(Join(common_disclosures, ",") & "," & Join(nh_disclosures, ",") & "," & Join(lender_package, ","), ",")
    Else
    packages_to_print = Split(Join(common_disclosures, ",") & "," & Join(lender_package, ","), ",")
    End If

完整的试用代码,可以在任何 8-8 张的新工作簿上试用

Sub test()
Dim common_disclosures As Variant
Dim nh_disclosures As Variant
Dim lender_package As Variant
Dim packages_to_print As Variant

    common_disclosures = Array("Sheet1", "Sheet4", "Sheet3", "Sheet2", "Sheet5")
    nh_disclosures = Array("Sheet2", "Sheet5")
    lender_package = Array("Sheet6", "Sheet8")

    subject_state = "MA"
    If subject_state <> "MA" Then
    packages_to_print = Split(Join(common_disclosures, ",") & "," & Join(nh_disclosures, ",") & "," & Join(lender_package, ","), ",")
    Else
    packages_to_print = Split(Join(common_disclosures, ",") & "," & Join(lender_package, ","), ",")
    End If

   Worksheets(packages_to_print).Select
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\Users\user\Desktop\Book1.pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        False

End Sub

推荐阅读