Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

per Makro alle Tabellenblätter mit gleichem Druckbereich drucken
#1
Hallo,

ich mochte gerne per Makro alle Blätter meiner Arbeitsmappe ( die Daten enthalten), immer mit dem gleichen Druckbereich ("A1:H47") per Schaltfläche
drucken können. Mit  Auswahl ......alle Arbeitsblätter, oder ein bestimmtes Blatt, oder eine bestimmte Zusammenstellung an Blättern.

Ob dieses machbar ist, weiß ich nicht...ich hoffe es?

Die Arbeitsblätter sind im Moment nummeriert, sollen aber später Namen bekommen.

Wie kann man das lösen?

Grüße Mike
Antworten Top
#2
Moin Mike,

in etwa so:


Code:
Sub GMG()
  Dim wks As Worksheet
  For Each wks In ActiveWindow.SelectedSheets
     ActiveSheet.PageSetup.PrintArea = DeinDruckBereich
     'Drucken
  Next wks
End Sub

Vorher natürlich die Blätter markieren.
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Antworten Top
#3
Hallo GMG-CC,

vielen Dank für deine Hilfe.
Ich probiere es heute Abend wenn ich zu Hause bin mal aus.

Muss ich dann jedes mal die Blätter anwählen und den Druckbereich auswählen?
Das wollte ich eigentlich vermeiden, da jedes Blatt den selben Bereich hat und ich mit einem Klick auf einem Botton,
alle Seiten (Blätter) oder eine bestimmet Anzahl an Blätter drucken möchte.

Aber wie gesagt, ich probiere erst einmal deinen Code aus und gebe ne Rückmeldung. :)

Vielen Dank.
Antworten Top
#4
Hi Mike,

(03.03.2016, 12:29)Mike4711 schrieb: Muss ich dann jedes mal die Blätter anwählen und den Druckbereich auswählen?
Das wollte ich eigentlich vermeiden, da jedes Blatt den selben Bereich hat und ich mit einem Klick auf einem Botton,
alle Seiten (Blätter) oder eine bestimmet Anzahl an Blätter drucken möchte.

der Druckbereich ist im Makro für alle Blätter gleich und es werden alle ausgewählten Blätter gedruckt.

Woher soll Excel sonst wissen, ob Du alle oder eine bestiimmte Anzahl oder nur eines ausdrucken willst? Wenn die jeweilige Anzahl fix ist, könntest Du es über mehrere Buttons lösen: einer für alle, einer für das aktive Blatt, einer für Blatt 2,3,7,10; einer für Blatt 2,4,6,8; usw...
Antworten Top
#5
Hallo Mike,


Du kannst auch das BeforePrint Ereignis nutzen um den Druckbereich festzulegen.

Entweder:


wenn in der Datei für alle Blätter immer der gleiche Druckbereich gelten soll,
dann kannst Du das im BeforePrint Ereignis regeln.


Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
 ActiveSheet.PageSetup.PrintArea = "A1:H47"
End Sub

Egal welche Tabelle gedruckt wird, gilt für diese der im Code festgelegte Druckbereich.

Oder, wenn es nur für bestimmte Blätter gelten soll, dann so:


Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
 If InStr("Tabelle1 Tabelle2 Tabelle3", ActiveSheet.Name) Then
   ActiveSheet.PageSetup.PrintArea = "A1:H47"
 End If
End Sub

Der im Code festgelegter Druckbereich gilt in diesem Fall nur für die im Code gelisteten Tabellen.

Eines der Codes muss dann in das Code Modul DieseArbeitsmappe
Gruß Atilla
Antworten Top
#6
Hallo Mike,

ich schlage ein Userform vor:

Dialog ufAusdruck
Option Explicit 

Private Sub cbAuswahl_Click()
 Dim lngZ As Long
 For lngZ = 0 To Me.ListBox1.ListCount - 1
   ListBox1.Selected(lngZ) = Not ListBox1.Selected(lngZ) And Len(ListBox1.List(lngZ))
 Next lngZ
End Sub

Private Sub cbDrucken_Click()
 Dim lngZ As Long
 On Error Resume Next
 Me.Hide
 For lngZ = 0 To ListBox1.ListCount - 1
   If ListBox1.Selected(lngZ) Then
      'Worksheets(CStr(ListBox1.List(lngZ))).Range("A1:H47").PrintPreview
      Worksheets(CStr(ListBox1.List(lngZ))).Range("A1:H47").PrintOut Copies:=tbKopien, Collate:=False
   End If
 Next lngZ
 Me.cbSchliessen.SetFocus
 Me.Show
End Sub

Private Sub cbDruckerauswahl_Click()
 Application.Dialogs(xlDialogPrinterSetup).Show
End Sub

Private Sub cbSchliessen_Click()
 Unload Me
End Sub

Private Sub UserForm_Initialize()
 Dim oWorksheet As Worksheet
 ListBox1.Clear
 With ListBox1
   For Each oWorksheet In ActiveWorkbook.Worksheets
     .AddItem oWorksheet.Name
     .Selected(.ListCount - 1) = True
   Next oWorksheet
 End With
End Sub



VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 14 - mit VBAHTML 12.6.0

TypNameEigenschaften
CommandButtoncbAuswahl
Caption:Auswahl umkehren
Height:24
Left:144
TabIndex:3
Top:15,75
Width:78,75
CommandButtoncbDrucken
Caption:Auswahl Drucken
Height:24
Left:144
TabIndex:2
Top:108
Width:78,75
CommandButtoncbSchliessen
Cancel:Wahr
Caption:Schließen
Height:24
Left:144
TabIndex:6
Top:157,5
Width:78,75
CommandButtoncbDruckerauswahl
Caption:Drucker auswählen
Height:24,75
Left:144
Top:49,5
Width:78,75
LabelLabel1
Caption:Anzahl Kopien:
Height:13,5
Left:148,5
TabIndex:5
Top:85,5
Width :54
ListBoxListBox1
BorderStyle:1
Height:341,3
Left:9
ListStyle:1
MultiSelect:1
SpecialEffect:0
TabIndex:4
TabStop:Falsch
Top:15,75
Width:125,25
TextBoxtbKopien
Height:15,75
Left:202,5
Text:1
Top:83,25
Value:1
Width:20,25

Gruß Uwe


Angehängte Dateien
.xlsm   AusgeählteBlätterDrucken.xlsm (Größe: 32,96 KB / Downloads: 11)
Antworten Top
#7
Hallo Kuwer,


dein Lösung sieht spitze aus.......irgendwie so, hatte ich das in meinen Vorstellungen.

Ich versuche das mal in Ruhe auf meine Arbeitsmappe umzusetzen.

Sollte ich das nicht hin bekommen, melde ich mich wieder bei dir.

Vielen Dank für deinen Vorschlag.

Gruß Mike
Antworten Top
#8
(03.03.2016, 14:08)atilla schrieb: Hallo Mike,


Du kannst auch das BeforePrint Ereignis nutzen um den Druckbereich festzulegen.

Entweder:


wenn in der Datei für alle Blätter immer der gleiche Druckbereich gelten soll,
dann kannst Du das im BeforePrint Ereignis regeln.


Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
 ActiveSheet.PageSetup.PrintArea = "A1:H47"
End Sub

Egal welche Tabelle gedruckt wird, gilt für diese der im Code festgelegte Druckbereich.

Oder, wenn es nur für bestimmte Blätter gelten soll, dann so:


Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
 If InStr("Tabelle1 Tabelle2 Tabelle3", ActiveSheet.Name) Then
   ActiveSheet.PageSetup.PrintArea = "A1:H47"
 End If
End Sub

Der im Code festgelegter Druckbereich gilt in diesem Fall nur für die im Code gelisteten Tabellen.

Eines der Codes muss dann in das Code Modul DieseArbeitsmappe

Hallo Atilla, auch deinen Vorschlag werde ich mal ausprobieren. Du hast mir bisher auch immer sehr gut geholfen. Ich wünschte, ich hätte bisher mehr Zeit gehabt, Makroprogrammierung besser zu verstehen.  Aber die letzten Monate waren sehr turbulent.   Gruß Mike
Antworten Top
#9
Hallo Kuwer,

deine Userform ist Spitze.
Eine Frage habe ich hierzu.

Könnte man dort noch einen zusätzlichen Button einbinden, der die ausgewählten Blätter auch als PDF
abspeichern lässt, mit Speicherort Auswahl?

glg

Mike
Antworten Top
#10
Hallo Mike,

vielleicht so mit dem PDF-Speichern:

Private Sub cbPDF_Click()
 Dim lngZ As Long, oWs As Worksheet, strPDF As String
 strPDF = Application.GetSaveAsFilename(, "PDF (*.pdf), *.pdf")
 If Not CVar(strPDF) = False Then
   For lngZ = 0 To ListBox1.ListCount - 1
     If ListBox1.Selected(lngZ) Then
       If Not oWs Is Nothing Then
         Worksheets(CStr(ListBox1.List(lngZ))).Select False
       Else
         Set oWs = ActiveSheet
         Worksheets(CStr(ListBox1.List(lngZ))).Select True
       End If
     End If
   Next lngZ
   ActiveSheet.Range("A1:H47").Select
   Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strPDF, _
       Quality:=xlQualityStandard, IncludeDocProperties:=True, _
       IgnorePrintAreas:=True, OpenAfterPublish:=False
   ActiveCell.Select
   oWs.Select
 End If
End Sub

Gruß Uwe


Angehängte Dateien
.xlsm   AusgeählteBlätterDrucken.xlsm (Größe: 34,83 KB / Downloads: 12)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste