Drucken
- Drucken von AL vom 05.11.2020 16:16:08

Betrifft: Drucken
von: AL
Geschrieben am: 05.11.2020 16:16:08
Hallo zusammen,
kann man den unteren Code wie folgt ändern: Es sollen beliebig viele (kopierte) Tabellenblätter, die den Namen FWK_VSA haben, erkannt und zusammen gedruckt werden. In dem Code müsste ich beispielsweise schon vorher wissen wie viele Tabellenblätter diesen Namen haben. Wenn ich nun eine fünfte Kopie des Tabellenblattes (FWK_VSA (5)) hätte, würde der Code das nicht mit drucken.
Sub FWKVSADRUCK()
Dim ArrDruck() As String, varItem, k As Integer, strAktiv As String
Dim ArrVorauswahl As Variant
On Error GoTo Fehler
ArrVorauswahl = Split("FWK_VSA,FWK_VSA (2),FWK_VSA (3),FWK_VSA (4)", ",")
strAktiv = ActiveSheet.Name
For Each varItem In ArrVorauswahl
With ActiveWorkbook.Sheets(varItem)
If .Visible = xlSheetVisible Then
k = k + 1
ReDim Preserve ArrDruck(1 To k)
ArrDruck(k) = .Name
End If
End With
weiter:
Next
If k > 0 Then
Application.ScreenUpdating = False
Sheets(ArrDruck).Select
Application.Dialogs(xlDialogPrint).Show
Application.ScreenUpdating = True
Else
MsgBox "Es gibt keine zu druckenden Bl_tter"
End If
Fehler:
With Err
Select Case .Number
Case 0 'Alles OK
Case 9 'Indexfehler
Resume weiter
Case Else
MsgBox "Fehler-Nr,: " & .nummer & vbLf & .Description
End Select
End With
ActiveWorkbook.Sheets(strAktiv).Select
End Sub

Betrifft: AW: Drucken
von: Nepumuk
Geschrieben am: 05.11.2020 18:05:29
Hallo Al,
teste mal:
Option Explicit
Public Sub FWKVSADRUCK()
Const PRESELCT_NAME As String = "FWK_VSA"
Dim objWorksheet As Worksheet
If Application.Dialogs(xlDialogPrinterSetup).Show Then
For Each objWorksheet In ThisWorkbook.Worksheets
If Left$(objWorksheet.Name, Len(PRESELCT_NAME)) = PRESELCT_NAME Then objWorksheet.PrintOut
Next
End If
End Sub
Gruß
Nepumuk

Betrifft: @Nepumuk_AW: Drucken
von: AL
Geschrieben am: 06.11.2020 09:24:29
Hallo Nepumuk,
besten Dank für die schnelle Antwort.
Ich habe deinen Code getestet und es hat folgendes gezeigt: Der Druck wird zwar ausgeführt, aber es kommt ein Laufzeitfehler '1004!: Die Methode 'PrintOut' für das Objekt'_Worksheet' ist fehlgeschlagen. Ferner werden die einzelnen Tabellenblätter mit der Bezeichnung FWK_VSA nicht zusammengefasst, wenn man beispielsweise eine PDF erzeugen möchte.
Gruß
AL

Betrifft: @Nepumuk_AW: Drucken
von: Nepumuk
Geschrieben am: 06.11.2020 09:32:32
Hallo Al,
dann so:
Public Sub FWKVSADRUCK()
Const PRESELCT_NAME As String = "FWK_VSA"
Dim objWorksheet As Worksheet
Dim blnSelect As Boolean
If Application.Dialogs(xlDialogPrinterSetup).Show Then
For Each objWorksheet In ThisWorkbook.Worksheets
If Left$(objWorksheet.Name, Len(PRESELCT_NAME)) = PRESELCT_NAME Then
If Not blnSelect Then
Call objWorksheet.Select
blnSelect = True
Else
Call objWorksheet.Select(Replace:=False)
End If
End If
Next
End If
ThisWorkbook.Windows(1).SelectedSheets.PrintOut
End Sub
Gruß
Nepumuk
Beiträge aus dem Excel-Forum zum Thema "Drucken"