Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1132to1136
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

Tabellenblätter drucken mit Inhaltsverzeichnis

Tabellenblätter drucken mit Inhaltsverzeichnis
Heinz
Hallo!
Meine Arbeitsmappen haben ca. 100 Tabellenblätter. Mittels eines Addin werden im vordersten Tabellenblatt "Inhaltsverzeichnis" von A3 bis A102 (ggf ff) die Tabellennamen aufgelistet.
Franz (fcs) hat mir ein hervorragend funkionierendes Makro (mein erstes hier) zum Löschen von Zeilen des Inhaltsverzeichnises und der zugehörigen Tabellenblätter geschrieben (Zeile oder Zelle in der Zeile markieren - Makrobutton - msg-box - ja- Zeile(n) und Bla(e)tt(er) gelöscht - Super.
Nach Entfernen der Zeilenlöschfunktion und ersetzen von delete durch printout (eigene Versuche) funktioniert das Makro erstaunlicherweise genauso gut zum Drucken der so ausgewählten Blätter.
In manchen Fällen würde ich mir gerne die Druckauswahl speichern (z. B. zum wiederholten Drucken)
Mein Fragen/Bitten wären deshalb Folgende:
a) Was muss ich bitte in dem unten folgenden Makro ändern, damit die Tabellenblätter gedruckt werden, die ich hinter den jeweiligen Blattnamen in Spalte A in Spalte B mit einem x kennzeichne?
b) Wie kann ich bitte dazu einen bestimmten Drucker (FreePDF-Multidoc) anstelle des Standarddruckers vorgeben?
Sub BlaetterDrucken_mit_Inhaltsverzeichnis_H2()
'Die folgende Prozedur kannst Du z.B. per Buttonklick starten,
'nachdem Du die zu druckenden Zeilen markiert hast.
'Die Markierungen kannst Du auch in Spalte B machen.
'Du kannst Blöcke selektieren oder auch mehrere einzelne Zeilen
'(bei gedrückter Strg-Taste).
Dim rngSelektion As Range, Zeile As Range, lNr As Long, _
strBlatt As String, arrZeilen() As Long, arrBlatt() As String
lNr = 0
If MsgBox("Blätter in markierten Zeilen Drucken?", vbQuestion + vbYesNo, _
"Blätter Drucken") = vbYes Then
'Daten der zu druckenden Blätter einlesen
Set rngSelektion = Selection
For Each Zeile In rngSelektion.Rows
If Zeile.Row >= 3 And _
fncCheckSheet(ActiveWorkbook, Worksheets(1).Cells(Zeile.Row, 1).Text) = True Then
lNr = lNr + 1
ReDim Preserve arrZeilen(1 To lNr)
ReDim Preserve arrBlatt(1 To lNr)
arrZeilen(lNr) = Zeile.Row
arrBlatt(lNr) = Worksheets(1).Cells(Zeile.Row, 1)
Else
'Blatt mit Name in Spalte A ist nicht vorhanden
Worksheets(1).Cells(Zeile.Row, 2) = "Blatt nicht vorhanden"
End If
Next
If lNr > 0 Then
Application.ScreenUpdating = False
'Blätter drucken
Application.DisplayAlerts = False
ActiveWorkbook.Sheets(arrBlatt).PrintOut
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End If
End If
End Sub


Function fncCheckSheet(wb As Workbook, varBlatt) As Boolean
'Prüft ob Blatt in Arbeitsmappe vorhanden
Dim objSheet As Object
For Each objSheet In wb.Sheets
If objSheet.Index = varBlatt Or LCase(objSheet.Name) = LCase(varBlatt) Then
fncCheckSheet = True
Exit For
End If
Next
End Function

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Tabellenblätter drucken mit Inhaltsverzeichnis
24.01.2010 04:12:32
fcs
Hallo Heinz,
es ist nicht so erstaunlich, dass die Prozedur für's Löschen und Drucken mit marginalen Anpassungen funktioniert. So wie man einzelne Tabellenblätter löschen und drucken kann
Sheets("Tabelle1") .Printout
Sheets("Tabelle1") .Delete
so kann man eben auch mehrere in einem Array angegeben Blätter auf einen Rutsch drucken oder auch löschen.
Ich hab deine Prozedur mal angepasst, so dass Blätter in mit "x" markierten Zeilen gedruckt werden.
Die genaue Bezeichnung von deinem Drucker muss du noch anpassen.
Die kleine Function bleibt unverändert. Die brauchst du auch nur einmal in deinem VBA-Projekt der Datei in einem allgemeinen Modul anzulegen.
Gruß
Franz
Sub BlaetterDrucken_mit_Inhaltsverzeichnis_H2_neu()
'Die folgende Prozedur kannst Du z.B. per Buttonklick starten,
'die Blätter der in Spalte B mit "x" markierten Blätter werden gedruckt.
Dim wks As Worksheet, Zeile As Long, lNr As Long, _
strDrucker As String, arrZeilen() As Long, arrBlatt() As String
lNr = 0
If MsgBox("Blätter in mit ""x"" markierten Zeilen Drucken?", vbQuestion + vbYesNo, _
"Blätter Drucken") = vbYes Then
'Daten der zu druckenden Blätter einlesen
Set wks = Worksheets(1) ' = Worksheets("Inhalt")
With wks
For Zeile = 3 To .Cells(.Rows.Count, 2).End(xlUp).Row
If LCase(.Cells(Zeile, 2)) = "x" And _
fncCheckSheet(ActiveWorkbook, Worksheets(1).Cells(Zeile, 1).Text) = True Then
lNr = lNr + 1
ReDim Preserve arrZeilen(1 To lNr)
ReDim Preserve arrBlatt(1 To lNr)
arrZeilen(lNr) = Zeile
arrBlatt(lNr) = Worksheets(1).Cells(Zeile, 1)
Else
'Blatt mit Name in Spalte A ist nicht vorhanden
Worksheets(1).Cells(Zeile, 2) = "Blatt nicht vorhanden"
End If
Next
End With
If lNr > 0 Then
Application.ScreenUpdating = False
'Blätter drucken
strDrucker = Application.ActivePrinter 'aktiven Drucker  merken
'anderen Drucker wählen aktivieren - Name ggf. mit Makrorekorder aufzeichnen
Application.ActivePrinter = "FreePDF auf Ne08:"
Application.DisplayAlerts = False
'       ActiveWorkbook.Sheets(arrBlatt).PrintPreview
ActiveWorkbook.Sheets(arrBlatt).PrintOut
Application.DisplayAlerts = True
Application.ActivePrinter = strDrucker 'gemerkten Drucker  wieder aktivieren
Application.ScreenUpdating = True
End If
End If
End Sub

Anzeige
AW: Tabellenblätter drucken mit Inhaltsverzeichnis
24.01.2010 10:04:11
Heinz
Hallo Franz
Auch diese Variante funktioniert einwandfrei. Damit kann ich jetzt wunschgemäß und schnell meine Tabellenblätter drucken und/oder löschen wie ich nur will. Ich darf garnicht daran denken, daß ich diese Prozeduren seit Jahren täglich mehrmals händisch in Einzelschritten durchgeführt habe.
Ich habe mich vor Jahren zwar mal in einem VHS-Kurs mit der Makro-Programmierung angelegt, habe dann dann aber doch vor dieser Makromier-Sprache kapituliert - wohlwissend, daß - von Dir eindrucksvoll bewiesen - faszinierte Möglichkeiten bestehen.
Ich bedanke mich wirklich ganz herzlich für die zwei von Dir geschaffenen Lösungsvarianten.
Mit freundlichen Grüßen
Heinz
Anzeige

85 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige