0

我正在尝试将特定的工作表导出为 PDF。该脚本是从另一个工作表调用的。由于可能存在我不想将所有站点打印/转换为 PDF 的情况,因此我包含了一些 IF 方法。“如果站点 x 不需要,请不要将其包含在 UNION 方法中,因此不要将其转换为 PDF”。工作正常,只要我在目标工作表中调用脚本。

如何从另一个工作表调用脚本?我总是收到错误,即无法选择 Range-Object(在行中:Union(intSeite1, intSeite2, intSeite3, intSeite4, intSeite5, intSeite6).Select)。

欢呼和感谢,马丁

Sub export()
Application.DisplayAlerts = False

Dim rngSeite1 As Range
Dim rngSeite2 As Range
Dim rngSeite3 As Range
Dim rngSeite4 As Range
Dim rngSeite5 As Range
Dim rngSeite6 As Range
Dim rngDruckbereich As Range

With Worksheets("Ausgabe")
    .Unprotect

    Set intSeite1 = .Range("A1:A92").EntireRow

    If .Range("a94") <> 1 Then
        Set intSeite2 = .Range("A94:A205").EntireRow
    Else
        Set intSeite2 = Nothing
    End If

    If .Range("a207") <> 1 Then
        Set intSeite3 = .Range("A207:A403").EntireRow
    Else
        Set intSeite3 = Nothing
    End If

    If .Range("a405") <> 1 Then
        Set intSeite4 = .Range("A405:A516").EntireRow
    Else
        Set intSeite4 = Nothing
    End If

    If .Range("a518") <> 1 Then
        Set intSeite5 = .Range("A518:A629").EntireRow
    Else
        Set intSeite5 = Nothing
    End If

    If .Range("a631") <> 1 Then
        Set intSeite6 = .Range("A631:A716").EntireRow
    Else
        Set intSeite6 = Nothing
    End If
End With

    If Not intSeite4 Is Nothing And Not intSeite5 Is Nothing Then
        Union(intSeite1, intSeite2, intSeite3, intSeite4, intSeite5, intSeite6).Select
    ElseIf Not intSeite4 Is Nothing Then
        Union(intSeite1, intSeite2, intSeite3, intSeite4, intSeite6).Select
    ElseIf Not intSeite5 Is Nothing Then
        Union(intSeite1, intSeite2, intSeite3, intSeite5, intSeite6).Select
    Else
        Union(intSeite1, intSeite2, intSeite3, intSeite5, intSeite6).Select
    End If

    Selection.ExportAsFixedFormat _
    Type:=xlTypePDF, _
    Filename:=CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\" & Worksheets("Eingabe").Range("D41"), _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=True

With Worksheets("Ausgabe")
    .Protect
End With
End Sub
4

1 回答 1

1

您必须先激活工作表,然后才能在其上选择任何内容,但您不必选择任何内容 - 使用范围变量

   Dim rngSeite1              As Range
   Dim rngArea                As Range

   With Worksheets("Ausgabe")
      .Unprotect

      Set rngSeite1 = .Range("A1:A92").EntireRow
      For Each rngArea In .Range("A94:A205,A207:A403,A405:A516,A518:A629,A631:A716").Areas
         If rngArea.Cells(1).Value <> 1 Then
            Set rngSeite1 = Union(rngSeite1, rngArea.EntireRow)
         End If
      Next rngArea
      rngSeite1.ExportAsFixedFormat _
            Type:=xlTypePDF, _
            Filename:=CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\" & Worksheets("Eingabe").Range("D41"), _
            Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, _
            IgnorePrintAreas:=False, _
            OpenAfterPublish:=True

      .Protect
   End With
于 2013-07-08T09:50:29.050 回答