Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
820to824
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
820to824
820to824
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Druckdialog über VBA, dann div. Blätter ausdrucken

Druckdialog über VBA, dann div. Blätter ausdrucken
21.11.2006 10:01:34
Kasimir
Hallo Leute,
ich brauche mal wieder Eure Hilfe. Ich habe ein Makro, über das verschiedene Blätter nach einer Vorauswahl, die in einer UserForm stattfindet, ausgedruckt werden sollen. Nun ist mein Makro im Moment so aufgebaut, dass die einzelnen CheckBoxen, die sich als Vorauswahl in der UserForm befinden, abgefragt werden ob sie markiert sind oder nicht. Ist eine CheckBox markiert, wird das Blatt, was angegeben ist, ausgedruckt. Soweit funktioniert das auch. Nun möchte aber mein Chef, dass man über das Druckendialogfeld ein Drucker und dessen Eigenschaften ausgewählt, bzw. geändert werden können und dann die Blätter auf dem ausgewählten Drucker ausgedruckt werden. Nun ist mein Problem, wie mache ich das. Das Dialogfenster wird ja mit dem Befehl „Application.Dialogs(xlDialogPrint).Show“ geöffnet. Aber wie mache ich dann weiter, denn im Moment steht ja bei mir z.B. Sheets(„Berechnung_1“).PrintOut.
Nachfolgend mal der Code, der hinter dem Button aus der UserForm steht. Eventuell hilft das ja weiter.
Private Sub CommandButton1_Click()
Aktives_Blatt = ActiveSheet.Name
Sheets("Hilfstabelle").Range("AB2") = "ja"
 '----------------------------------------------------------------------------------
 'Bildschirmaktualisierung ausschalten
Application.ScreenUpdating = False
 '----------------------------------------------------------------------------------
 'Wenn Blatt "Berechnung_1" ausgeblendet, dann einblenden, Ausdrucken und wieder
 'ausblenden
If CheckBox9 = False And CheckBox10 = False Then
MsgBox "Es wurde nicht angegeben, ob die Adresse auf dem Ausdruck erscheinen soll " _
& "Bitte Auswahl nachholen.", vbInformation, "Abbruch..."
Exit Sub
End If
If CheckBox1 = True Then
If Sheets("Berechnung_1").Visible = xlVeryHidden Then
With Sheets("Berechnung_1")
.Visible = True
.PrintOut
.Visible = xlVeryHidden
End With
Else
Sheets("Berechnung_1").Select '.PrintOut
End If
End If
'----------------------------------------------------------------------------------
'Wenn Blatt "Berechnung_2" ausgeblendet, dann einblenden, Ausdrucken und wieder
'ausblenden
If CheckBox2 = True Then
If Sheets("Berechnung_2").Visible = xlVeryHidden Then
With Sheets("Berechnung_2")
.Visible = True
.Activate
'Prüfen ob Zeile 3 ausgeblendet oder eingeblendet
If .Rows("3:3").EntireRow.Hidden = True Then
Zeile_3_eingeblendet = True
Else
Zeile_3_eingeblendet = False
End If
'Ja Nach Auswahl der Checkboxen Zeile 3 zum Drucken ein- bzw. Ausblenden
If CheckBox9 = True Then
With Sheets("Berechnung_2")
.Unprotect Sheets("Hilfstabelle").Range("C2")
.ScrollArea = "A1:" & Replace(Cells(1, 256).Address(0, 0), "1", "") & "65536"
.Rows("3:3").EntireRow.Hidden = False
.ScrollArea = "A1:" & Replace(Cells(1, 9).Address(0, 0), "1", "") & "42"
.Protect Sheets("Hilfstabelle").Range("C2")
Goto Weiter
End With
End If
If CheckBox10 = True Then
With Sheets("Berechnung_2")
.Unprotect Sheets("Hilfstabelle").Range("C2")
.ScrollArea = "A1:" & Replace(Cells(1, 256).Address(0, 0), "1", "") & "65536"
.Rows("3:3").EntireRow.Hidden = True
.ScrollArea = "A1:" & Replace(Cells(1, 9).Address(0, 0), "1", "") & "42"
.Protect Sheets("Hilfstabelle").Range("C2")
End With
End If
Weiter:
.PrintOut
.Select
'Entsprechend der Prüfung ob Zeile ein- oder ausgeblendet,
'die Zeile wieder ein, bzw. ausblenden
If Zeile_3_eingeblendet = True Then
Berechnung_Zeile_3_ausblenden
Else
Berechnung_Zeile_3_einblenden
End If
.Visible = xlVeryHidden
End With
Else
'Prüfen ob Zeile 3 ausgeblendet oder eingeblendet
If Sheets("Berechnung_2").Rows("3:3").EntireRow.Hidden = True Then
Zeile_3_eingeblendet = True
Else
Zeile_3_eingeblendet = False
End If
'Ja Nach Auswahl der Checkboxen Zeile 3 zum Drucken ein- bzw. Ausblenden
If CheckBox9 = True Then Berechnung_Zeile_3_einblenden
If CheckBox10 = True Then Berechnung_Zeile_3_ausblenden
Sheets("Berechnung_2").PrintOut
'Entsprechend der Prüfung ob Zeile ein- oder ausgeblendet,
'die Zeile wieder ein, bzw. ausblenden
If Zeile_3_eingeblendet = True Then
Berechnung_Zeile_3_ausblenden
Else
Berechnung_Zeile_3_einblenden
End If
End If
End If
'----------------------------------------------------------------------------------
'Wenn Blatt "Plan" ausgeblendet, dann einblenden, Ausdrucken und wieder
'ausblenden
If CheckBox4 = True Then
If Sheets("Plan").Visible = xlVeryHidden Then
With Sheets("Plan")
.Visible = True
.PrintOut
.Visible = xlVeryHidden
End With
Else
Sheets("Plan").PrintOut
End If
End If
'----------------------------------------------------------------------------------
'Wenn Blatt "Konzept" ausgeblendet, dann einblenden, Ausdrucken und wieder
'ausblenden
If CheckBox3 = True Then
If Sheets("Konzept").Visible = xlVeryHidden Then
With Sheets("Konzept")
.Visible = True
.PrintOut
.Visible = xlVeryHidden
End With
Else
Sheets("Konzept").PrintOut
End If
End If
'----------------------------------------------------------------------------------
'Wenn Blatt "Diagramm" ausgeblendet, dann einblenden, Ausdrucken und wieder
'ausblenden
If CheckBox5 = True Then
If Sheets("Diagramm").Visible = xlVeryHidden Then
With Sheets("Diagramm")
.Visible = True
.PrintOut
.Visible = xlVeryHidden
End With
Else
Sheets("Diagramm").Select '.PrintOut
End If
End If
'----------------------------------------------------------------------------------
'Wenn Blatt "Vorschau Anlage V" ausgeblendet, dann einblenden, Ausdrucken und wieder
'ausblenden
If CheckBox7 = True Then
If Sheets("Vorschau Anlage").Visible = xlVeryHidden Then
With Sheets("Vorschau Anlage")
.Visible = True
.PrintOut
.Visible = xlVeryHidden
End With
Else
Sheets("Vorschau Anlage").PrintOut
End If
End If
'----------------------------------------------------------------------------------
'Wenn Blatt "Rechtsbelehrung" ausgeblendet, dann einblenden, Ausdrucken und wieder
'ausblenden
If CheckBox8 = True Then
If Sheets("Rechtsbelehrung").Visible = xlVeryHidden Then
With Sheets("Rechtsbelehrung")
.Visible = True
.PrintOut
.Visible = xlVeryHidden
End With
Else
Sheets("Rechtsbelehrung").PrintOut
End If
End If
Drucken_Activ = False
Sheets(Aktives_Blatt).Activate
Unload Me
Sheets("Hilfstabelle").Range("AB2") = "nein"
End Sub
Danke Euch für Eure Hilfe,
Kasimir

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

Betreff
Datum
Anwender
Anzeige
AW: Druckdialog über VBA, dann div. Blätter ausdrucken
21.11.2006 18:59:49
Heiko
Hallo Kasimir,
da bist du an einer Stelle angekommen bei dem das Programmieren erst richtig interessant wird oder kompliziert, je nach Standpunkt halt.
1. An die Parameter die du im Dialogfenster einstellst die du mit Application.Dialogs(xlDialogPrint).Show aufrufst, kommst du nicht ran dieser Dialog gibt keine Werte an VBA zurück.
2. Um an das Fenster ranzukommen das man sieht wenn man im Druckerdialog auf "Eigenschaften" drückt ranzukommen braucht man API Funktionen. Z.B. sowas hier: http://msdn.microsoft.com/library/en-us/gdi/prntspol_7k1f.asp
3. Als Krücke könnte dieser Befehl dienen, damit kann man schon mal einen Drucker auswählen
Application.Dialogs(xlDialogPrinterSetup).Show
Wenn man da auf "Eigenschaften" drückt kann man sogar die Eigenschaften für den Druck ändern. Aber Achtung nur für den aktuellen Drucker, also der vor dem öffnen des Fenster der aktive Drucker war. Wenn du nur einen Drucker aus der Liste anklickst und dann auf Eigenschaften gehst wird der "alte Drucker" verändert. Also nur ne Krücke halt.
4. Wenn das genauso aussehen soll wie bei Drucken in EXCEL direkt nur halt mit der Möglichkeit einzelne Blätter auszuwählen wie in deinem Beispiel dann gibt es zwei Wege. Entweder du beschäftigst dich intensiv mit API und Windows Programmierung oder du suchst dir einen Auftragsprogrammierer der dir den Teil schreibt.
Wie gesagt du bist da angekommen wo es interessant wird ;-)
Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
AW: Druckdialog über VBA, dann div. Blätter ausdrucken
22.11.2006 19:36:41
Kasimir
Hallo Heiko,
sorry, dass ich erst jetzt antworte, war aber leider vorher verhindert. Danke Dir für Deine Hilfe. Die hat micht weitergebracht.
Solltest Du hier nochmal vorbeischauen, kannst Du mir eine gute Anlaufadresse für diese API-Befehle nennen, von der man das lernen kann? Wenn möglich auf deutsch.
Danke nochmal und Gruß,
Kasimir
AW: Druckdialog über VBA, dann div. Blätter ausdrucken
23.11.2006 07:19:16
Heiko
Hallo Kasimir,
also einen Tipp hab ich nicht wirklich, da das Thema in vielen Büchern behandelt wird und jeweils zu anderen Schwerpunkten.
Hier mal zum Einstieg was von Online-EXCEL http://www.online-excel.de/excel/singsel_vba.php?f=37
Vieleicht als Tipp im Forum von Online Excel mal dirket die Frage stellen wie und ob man an das "Eigenschaften" Fenster ran kommt, da sind einige API Experten am Start (Nepumuk, bst, Peter Haserodt ...) Musst du dann aber GENAU und KURZ beschreiben was du haben willst.
Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige