2016-07-28 7 views
1

Ich möchte ein Array von Blättern mit der Methode Sheets (Array()) auswählen. Die Blätter, die ich auswählen möchte, sind in den Zellen meines Arbeitsblatts Printlijst benannt. Die sheetnames aufgelistet Form Spalte D bis K.Excel Druckbogen aus Array

Nicht alle Zellen gefüllt sind, so, wenn ich die Folowing Funktion

Dies ist, was das Blatt wie folgt aussieht: http://i.stack.imgur.com/uJqZc.jpg

Und dies ist der Code:

Sub PDF_maken() 
Dim ws As Worksheet 
Dim LR As Long 
Dim r As Range 
Dim Mypath As String 
Dim strarray As String 


Set ws = ActiveWorkbook.Worksheets("Printlijst") 
LR = ws.Cells(Rows.Count, 1).End(xlUp).Row 

For Each r In ws.Range("B20:B20").Cells 

If Not IsEmpty("B" & r.Row) Then 
Mypath = ws.Range("B" & r.Row).Text 

colCheck = 4 
Do Until Cells(r.Row, colCheck) = "" 
    strarray = strarray & IIf(colCheck > 4, ",", "") & Cells(r.Row, colCheck).Value 
colCheck = colCheck + 1 
Loop 

ActiveWorkbook.Sheets(strarray).Select 
    ActiveWorkbook.SelectedSheets.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 
Mypath & ws.Range("C" & r.Row).Text & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, _ 
IgnorePrintAreas:=False, OpenAfterPublish:=False 


End If 
Next r 

End Sub 

die Fehler passiert, wenn mehr als ein Blatt muss gewählt werden, wenn ich die errorcheck StrArray verwenden ist „2450,2451,2452,2453,2454,2455,2456,2457“

Antwort

0

Sie können strarray nicht in ActiveWorkbook.Sheets(strarray) verwenden. Es erwartet einen einzelnen Blattnamen oder eine Sammlung von Blättern im Array.

Ist das, was Sie versuchen?

' 
'~~> Rest of your code 
' 

Dim strarray As String 
Dim MyAr As Variant 

Do Until Cells(r.Row, colCheck) = "" 
    strarray = strarray & IIf(colCheck > 4, ",", "") & Cells(r.Row, colCheck).Value 
    colCheck = colCheck + 1 
Loop 

If InStr(1, strarray, ",") Then 
    MyAr = Split(strarray, ",") '<~~ This is where we are creating an actual array 

    ActiveWorkbook.Sheets(MyAr).Select 
Else 
    ActiveWorkbook.Sheets(strarray).Select 
End If 

' 
'~~> Rest of your code 
' 

HINWEIS: BTW, sollten Sie vermeiden .Select verwenden und direkt den Betrieb auf diesem Bogen (n) durchzuführen. Vielleicht möchten Sie sehen How to avoid using Select in Excel VBA macros

+0

Vielen Dank! Es scheint zu funktionieren, die im Array gespeicherten Blätter sind ausgewählt. Das Problem ist nur, dass wenn mehrere Blätter ausgewählt sind, der Exportbefehl nicht funktioniert. Wenn nur ein Blatt gedruckt werden muss, funktioniert es :) – user4373888

+0

Wenn Sie mehrere Blätter exportieren, können Sie 'Selection' nach dem' .Select' verwenden. Stellen Sie jedoch sicher, dass alle diese Blätter wieder eingeblendet werden. Andernfalls gibt der '.Select' Befehl einen Fehler aus. 'Selection.ExportAsFixedFormat Typ: = xlTypePDF, Dateiname ......' –

+0

Hmm scheint immer noch nicht hier zu arbeiten – user4373888