Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1344to1348
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

eingeblendete Tabellenblätter ausdrucken mit VBA

eingeblendete Tabellenblätter ausdrucken mit VBA
28.01.2014 00:18:17
Martina
Hallo zusammen,
ich habe mehrere gleich aufgebaute Excel-Arbeitsmappen für die ich ein " Berichts-Makro" zum Ausdrucken erstellen möchte. Es sollen immer nur die Tabellenblätter mit den Namen Daten 1-x ausgedruckt werden (die Arbeitsmappe erhält noch andere Blätter). Je nach Bedarf möchte ich die Tabellenblätter mit den Namen Daten 1-x ein bzw. ausblenden. Durch das Makro soll in die Seitenansicht gewechselt werden, um sich den Bericht ansehen zu können und einen Drucker auszuwählen. Vorher wird für jedes Tabellenblatt die Zeilenhöhe automatisch angepaßt und die Kopfzeile ausgefüllt. Das Makro, das ich dazu erstellt habe, läuft so lange ich alle Tabellenblätter eingeblendet habe. Blende ich ein Tabellenblatt aus, funktioniert die Anpassung der Zeilenhöhe noch, allerdings wird nicht mehr in die Seitenansicht gewechselt, da die ausgeblendeten Tabellenblätter nicht gefunden werden.
Es wäre super, wenn jemand einen Rat hat, was ich ändern muss damit das Makro läuft.
Im Moment sieht das Makro so aus:
Sub test()
If Sheets("Daten1").Visible Then
Sheets("Daten1").Select
ActiveSheet.Unprotect "test"
Rows("1:200").Select
Selection.Rows.AutoFit
ActiveSheet.Protect "test", DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
If Sheets("Daten2").Visible Then
Sheets("Daten2").Select
ActiveSheet.Unprotect "test"
Rows("1:42").Select
Selection.Rows.AutoFit
ActiveSheet.Protect "test", DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
If Sheets("Daten3").Visible Then
Sheets("Daten3").Select
ActiveSheet.Unprotect "test"
Rows("1:42").Select
Selection.Rows.AutoFit
ActiveSheet.Protect "test", DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
Sheets(Array("Daten1", "Daten2", "Daten3")).Select
Sheets("Daten1").Activate
With ActiveSheet.PageSetup
.CenterHeader = "&""Arial,Bold""&12" _
& Sheets("Inhaltsverzeichnis").Range("C2").Value & Chr(10) & "Project no: " &  _
Sheets("Inhaltsverzeichnis").Range("C3").Value
End With
ActiveWindow.SelectedSheets.PrintPreview
End Sub
Viele Grüße
Martina

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: eingeblendete Tabellenblätter ausdrucken mit VBA
28.01.2014 09:56:10
Rudi
Hallo,
teste mal:
Sub test()
Dim wks As Worksheet
Dim objWks As Object
Dim arrWks
Set objWks = CreateObject("Scripting.Dictionary")
For Each wks In Worksheets
If wks.Name Like "Daten*" Then
If wks.Visible Then
objWks(wks.Name) = 0
With wks
.Unprotect "test"
.Rows("1:200").AutoFit
.Protect "test", DrawingObjects:=True, Contents:=True, Scenarios:=True
End With
End If
End If
Next wks
arrWks = objWks.keys
Sheets(arrWks).Select
With Sheets(arrWks(0)).PageSetup
.CenterHeader = "&""Arial,Bold""&12" _
& Sheets("Inhaltsverzeichnis").Range("C2").Value & Chr(10) _
& "Project no: " & Sheets("Inhaltsverzeichnis").Range("C3").Value
End With
ActiveWindow.SelectedSheets.PrintPreview
End Sub

Gruß
Rudi

Anzeige
AW: eingeblendete Tabellenblätter ausdrucken mit VBA
28.01.2014 18:53:01
Martina
Hallo Rudi,
das Makro funktioniert super, vielen Dank!
Wird das Makro direkt nochmal ausgeführt, kommt es zu einer Fehlermeldung, da die ausgedruckten Tabellenblätter markiert bleiben. Beim erneuten Ausführen des Makros kann daher der Blattschutz nicht aufgehoben werden. Gibt es eine Möglichkeit nach dem Ausdruck die Markierung der Tabellenblätter direkt wieder aufzuheben? Das wäre super für den Endanwender.
Viele Grüße
Martina

AW: eingeblendete Tabellenblätter ausdrucken mit VBA
29.01.2014 08:00:36
fcs
Hallo Martina,
füge nach dem Drucken zusätzlich eine Blattselektion ein.
Gruß
Franz
   ActiveWindow.SelectedSheets.PrintPreview
ActiveSheet.Select
End Sub

Anzeige
AW: eingeblendete Tabellenblätter ausdrucken mit VBA
29.01.2014 21:52:13
Martina
Vielen Dank, jetzt funktioniert das Makro SUPER.
Viele Grüße
Martina

AW: eingeblendete Tabellenblätter ausdrucken mit VBA
28.01.2014 10:22:51
fcs
Hallo Martina,
hier mein Vorschlag für die Anpassung des Makros.
Gruß
Franz
Sub test()
Dim arrSheets() As String, intI As Integer, objSheet As Object
'Blätter Daten1 bis DatenX abarbeiten
For Each objSheet In ActiveWorkbook.Sheets
With objSheet
If Left(.Name, 5) = "Daten" Then
If .Visible = True Then
.Unprotect "test"
Select Case .Name
Case "Daten1"
.Rows("1:200").AutoFit
Case "Daten2", "Daten3"
.Rows("1:42").AutoFit
End Select
.Protect "test", DrawingObjects:=True, Contents:=True, Scenarios:=True
.PageSetup.CenterHeader = "&""Arial,Bold""&12" _
& Sheets("Inhaltsverzeichnis").Range("C2").Value & Chr(10) _
& "Project no: " & Sheets("Inhaltsverzeichnis").Range("C3").Value
intI = intI + 1
ReDim Preserve arrSheets(1 To intI)
arrSheets(intI) = .Name
End If
End If
End With
Next
If intI > 0 Then
Sheets(arrSheets(1)).Activate
'    ActiveSheet.PageSetup.CenterHeader = "&""Arial,Bold""&12" _
& Sheets("Inhaltsverzeichnis").Range("C2").Value & Chr(10) _
& "Project no: " & Sheets("Inhaltsverzeichnis").Range("C3").Value
Sheets(arrSheets(1)).PrintPreview
Erase arrSheets
Else
MsgBox "Keine Daten-Sheets sichtbar", , "Blätter drucken"
End If
End Sub

Anzeige

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige