2013-07-08 23 views
0

我想要將特定的工作表導出爲PDF。該腳本從另一個工作表中調用。由於可能出現這種情況,我不想將所有站點打印/轉換爲PDF格式,因此我還包含了一些IF方法。 「如果站點x不需要,請不要將其包含在UNION方法中,因此不要將其轉換爲PDF」。只要我在目標工作表中調用腳本,就可以正常工作。Excel VBA |另一個工作表上的聯合方法

如何從另一個工作表調用腳本?我總是得到錯誤,無法選擇範圍對象(行: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 

回答

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 
+0

嗨,喬西,就像一個魅力!謝謝! :) –

+0

+1很好的答案。 – brettdj

相關問題