Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1788to1792
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Drucken

Drucken
05.11.2020 16:16:08
AL
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

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Drucken
05.11.2020 18:05:29
Nepumuk
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
Anzeige
@Nepumuk_AW: Drucken
06.11.2020 09:24:29
AL
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
@Nepumuk_AW: Drucken
06.11.2020 09:32:32
Nepumuk
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
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige