【问题标题】:Setting multiple and large print areas设置多个和大的打印区域
【发布时间】:2023-01-19 23:11:49
【问题描述】:

我正在尝试在 excel 中设置大型和多个打印区域。我有几个在 excel 中创建的文档,并且我试图为每个范围区域设置打印区域。

这是我的代码:

Sub SetPrintArea()
    Dim ws As Worksheet
    Dim yRng1() As Variant
    Dim yRng2() As Variant
    Dim yRng3() As Variant
    Dim yRng4() As Variant
    Dim yRng5() As Variant
    Dim yRng6() As Variant
    Dim yRng7() As Variant
    Dim yRng8() As Variant
    Dim yRng9() As Variant
    Dim yRng10() As Variant
    Dim yRng11() As Variant
    Dim yRng12() As Variant
    Dim yRng13() As Variant
    Dim yRng14() As Variant
    Dim yRng15() As Variant
    Dim yRng16() As Variant
    Dim yRng17() As Variant
    Dim yRng18() As Variant
    Dim yRng19() As Variant
    Dim yRng20() As Variant
    Dim combinedArrays() As Variant
    Dim printRange As Range
    
    Set ws = ThisWorkbook.Sheets("Manifest")

    yRng1 = Array(ws.Range("A1:W59"), ws.Range("A62:W120"), ws.Range("A123:W181"), ws.Range("A184:W242"))
    yRng2 = Array(ws.Range("A245:W303"), ws.Range("A306:W364"), ws.Range("A367:W425"), ws.Range("A428:W486"), ws.Range("A489:W547"))
    yRng3 = Array(ws.Range("A550:W608"), ws.Range("A611:W669"), ws.Range("A672:W730"), ws.Range("A733:W791"), ws.Range("A794:W852"))
    yRng4 = Array(ws.Range("A855:W913"), ws.Range("A916:W974"), ws.Range("A977:W1035"), ws.Range("A1038:W1096"))
    yRng5 = Array(ws.Range("A1099:W1157"), ws.Range("A1160:W1218"), ws.Range("A1221:W1279"), ws.Range("A1282:W1340"), ws.Range("A1343:W1401"))
    yRng6 = Array(ws.Range("A1404:W1462"), ws.Range("A1465:W1523"), ws.Range("A1526:W1584"), ws.Range("A1587:W1645"), ws.Range("A1648:W1706"))
    yRng7 = Array(ws.Range("A1709:W1767"), ws.Range("A1770:W1828"), ws.Range("A1831:W1889"), ws.Range("A1892:W1950"), ws.Range("A1953:W2011"))
    yRng8 = Array(ws.Range("A2014:W2072"), ws.Range("A2075:W2133"), ws.Range("A2136:W2194"), ws.Range("A2197:W2255"), ws.Range("A2258:W2316"))
    yRng9 = Array(ws.Range("A2319:W2377"), ws.Range("A2380:W2438"), ws.Range("A2441:W2499"), ws.Range("A2502:W2560"), ws.Range("A2563:W2621"))
    yRng10 = Array(ws.Range("A2624:W2682"), ws.Range("A2685:W2743"), ws.Range("A2746:W2804"), ws.Range("A2807:W2865"), ws.Range("A2868:W2926"))
    yRng11 = Array(ws.Range("A2929:W2987"), ws.Range("A2990:W3048"), ws.Range("A3051:W3109"), ws.Range("A3112:W3170"), ws.Range("A3173:W3231"))
    yRng12 = Array(ws.Range("A3234:W3292"), ws.Range("A3295:W3353"), ws.Range("A3356:W3414"), ws.Range("A3417:W3475"), ws.Range("A3478:W3536"))
    yRng13 = Array(ws.Range("A3539:W3597"), ws.Range("A3600:W3658"), ws.Range("A3661:W3719"), ws.Range("A3722:W3780"), ws.Range("A3783:W3841"))
    yRng14 = Array(ws.Range("A3844:W3902"), ws.Range("A3905:W3963"), ws.Range("A3966:W4024"), ws.Range("A4027:W4085"), ws.Range("A4088:W4146"))
    yRng15 = Array(ws.Range("A4149:W4207"), ws.Range("A4210:W4268"), ws.Range("A4271:W4329"), ws.Range("A4332:W4390"), ws.Range("A4393:W4451"))
    yRng16 = Array(ws.Range("A4454:W4512"), ws.Range("A4515:W4573"), ws.Range("A4576:W4634"), ws.Range("A4637:W4695"), ws.Range("A4698:W4756"))
    yRng17 = Array(ws.Range("A4759:W4817"), ws.Range("A4820:W4878"), ws.Range("A4881:W4939"), ws.Range("A4942:W5000"), ws.Range("A5003:W5061"))
    yRng18 = Array(ws.Range("A5064:W5122"), ws.Range("A5125:W5183"), ws.Range("A5186:W5244"), ws.Range("A5247:W5305"), ws.Range("A5308:W5366"))
    yRng19 = Array(ws.Range("A5369:W5427"), ws.Range("A5430:W5488"), ws.Range("A5491:W5549"), ws.Range("A5552:W5610"), ws.Range("A5613:W5671"))
    yRng20 = Array(ws.Range("A5674:W5732"), ws.Range("A5735:W5793"), ws.Range("A5796:W5854"), ws.Range("A5857:W5915"), ws.Range("A5918:W5976"))
    
    combinedArrays = Array(yRng1, yRng2, yRng3, yRng4, yRng5, yRng6, yRng7, yRng8, yRng9, yRng10, yRng11, yRng12, yRng13, yRng14, yRng15, yRng16, yRng17, yRng18, yRng19, yRng20)


    Set printRange = combinedArrays(0)(0)

    For i = 0 To UBound(combinedArrays)
        For j = 0 To UBound(combinedArrays(i))
            If i = 0 And j = 0 Then
                Set printRange = combinedArrays(i)(j)
            Else
                Set printRange = Union(printRange, combinedArrays(i)(j))
            End If
        Next j
    Next i

    ws.PageSetup.printArea = printRange.Address

End Sub

但是,当我尝试打印时,我只得到 18 页,最多并包括“A1038:W1096”范围。我想为上面定义的每个范围设置一页。

这是excel的限制吗?还是我做错了什么?

品牌,

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    如果有人感兴趣,我只是使用了 office JavaScript:

    function main(workbook: ExcelScript.Workbook) {
    let manifestSheet = workbook.getWorksheet("Manifest");
    // Set print area for selectedSheet to range "A1:D5, A7:D12, A14:D19"
    let yRng1 = "A1:W59, A62:W120, A123:W181, A184:W242"
    let yRng2 = "A245:W303, A306:W364, A367:W425, A428:W486, A489:W547"
    let yRng3 = "A550:W608, A611:W669, A672:W730, A733:W791, A794:W852"
    let yRng4 = "A855:W913, A916:W974, A977:W1035, A1038:W1096"
    let yRng5 = "A1099:W1157, A1160:W1218, A1221:W1279, A1282:W1340, A1343:W1401"
    let yRng6 = "A1404:W1462, A1465:W1523, A1526:W1584, A1587:W1645, A1648:W1706"
    let yRng7 = "A1709:W1767, A1770:W1828, A1831:W1889, A1892:W1950, A1953:W2011"
    let yRng8 = "A2014:W2072, A2075:W2133, A2136:W2194, A2197:W2255, A2258:W2316"
    let yRng9 = "A2319:W2377, A2380:W2438, A2441:W2499, A2502:W2560, A2563:W2621"
    let yRng10 = "A2624:W2682, A2685:W2743, A2746:W2804, A2807:W2865, A2868:W2926"
    let yRng11 = "A2929:W2987, A2990:W3048, A3051:W3109, A3112:W3170, A3173:W3231"
    let yRng12 = "A3234:W3292, A3295:W3353, A3356:W3414, A3417:W3475, A3478:W3536"
    let yRng13 = "A3539:W3597, A3600:W3658, A3661:W3719, A3722:W3780, A3783:W3841"
    let yRng14 = "A3844:W3902, A3905:W3963, A3966:W4024, A4027:W4085, A4088:W4146"
    let yRng15 = "A4149:W4207, A4210:W4268, A4271:W4329, A4332:W4390, A4393:W4451"
    let yRng16 = "A4454:W4512, A4515:W4573, A4576:W4634, A4637:W4695, A4698:W4756"
    let yRng17 = "A4759:W4817, A4820:W4878, A4881:W4939, A4942:W5000, A5003:W5061"
    let yRng18 = "A5064:W5122, A5125:W5183, A5186:W5244, A5247:W5305, A5308:W5366"
    let yRng19 = "A5369:W5427, A5430:W5488, A5491:W5549, A5552:W5610, A5613:W5671"
    let yRng20 = "A5674:W5732, A5735:W5793, A5796:W5854, A5857:W5915, A5918:W5976"
    
    let printRanges = [yRng1, yRng2, yRng3, yRng4, yRng5, yRng6, yRng7, yRng8, yRng9, yRng10, yRng11, yRng12, yRng13, yRng14, yRng15, yRng16, yRng17, yRng18, yRng19, yRng20];
    let printRange = printRanges.join(',');
    
    manifestSheet.getPageLayout().setPrintArea(printRange);
    

    }

    这解决了我的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多