Excel VBA - mehrere Tabellenblätter drucken Userform

DarkCava

Lt. Junior Grade
Registriert
Jan. 2006
Beiträge
423
Hallo zusammen,

ich habe eine Excel-Datei, welche insgesamt 9 Tabellenblätter enthält.

Der Anwender ruft über einen Button folgende Userform auf:

Druckauswahl.jpg

Dieser sollen folgende Funktionalitäten hinzugefügt werden:

  1. freie Auswahl anhand Checkboxen, welche Tabellenblätter gedruckt werden sollen
  2. Setzen der Tabellenblätter auf DIN-A4 Querformat
  3. Setzen der Skalierung auf "Alle Spalten auf einer Seite darstellen"
  4. Kein Duplexdruck (Einseitiger Druck)

Hat jemand eine Idee, wie man das in VBA umsetzen könnte?
 
Eigentlich ziemlich einfach denke ich.

Private sub button_name_Click()

If checkbox1 Then
ActiveWorkbook.Sheets(1).PrintOut
End if

(hier alle weiteren checkboxen überprüfen)

End Sub

(das ist so ausm kopf hingeschrieben und funktioniert vermutlich nicht - sollte aber die wichtigen punkte abdecken :) )


zum thema spaltenskalierung und querformat:
http://www.herber.de/forum/archiv/1220to1224/1222275_Spalten_auf_eine_Seite.html
mit Focus auf:
"
.Orientation = xlLandscape
.FitToPagesTall = False
.FitToPagesWide = 1
"
 
Zuletzt bearbeitet:
Danke aroxx, ich habe den Code hinbekommen und es funktioniert.

Eine Funktionalität würde ich gerne noch implementieren:

Die Tabellenblätter sollen untereinander gedruckt werden. D. h. nicht 1 Seite pro Blatt sondern (dynamisch nach Inhaltsvolumen) so viele Tabellenblätter untereinander pro Seite wie draufpassen.

Gibt es hierfür eine Lösung?
 
hm vielleicht nicht der beste code, aber folgende idee:

Private sub button_name_Click()

Dim iCount As Integer
Dim sSheetNames(8) As String (hat 9 einträge glaube ich)

iCount = 0

If checkbox1 Then
sSheetNames(iCount) = ActiveWorkbook.Sheets(1).Name
iCount = iCount + 1
End if

(hier alle weiteren checkboxen überprüfen)

ReDim Preserve sSheetNames(iCount)

Worksheets(sSheetNames).PrintOut

End Sub

da könnten so kleine Indexfehler drin sein... (z.b. beim ReDim) aber könnte so funktionieren. ist ungetestet, hab mir nur gedacht, vielleicht ist ein PrintOut aufruf besser und er druckt alles nacheinander. Kann aber auch sein, dass er auf jedes Element in dem Array dann PrintOut aufruft.


edit: hier wird eine andere Idee präsentiert: http://excel.tips.net/T003243_Printing_Multiple_Worksheets_on_a_Single_Page.html
Wäre interessant ob meine Idee auch funktioniert :p
 
Zuletzt bearbeitet:
Hallo aroxx,

die von dir verlinkte Prozedur hat auf Anhieb funktioniert. Ich habe sie noch nach meinen Bedürfnissen angepasst. Daher habe ich deinen Ansatz nicht weiter verfolgt.

Danke & viele Grüße
 
Zurück
Oben