automatisches Drucken mit VBA
#1
Hallo Leute,

ich habe ein Problem, wo ich nicht wirklich weiter komme, daher bitte ich euch um Unterstützung.

Ich habe eine Excel Datei. Darin befinden sich:

Tabellenblatt 1: Eingabeblatt
Tabellenblatt 2: Vorlage 1
Tabellenblatt 3: Vorlage 2

Am Tabellenblatt 1 werden allgemeine Eingaben gepflegt.

Die Benutzer können nun die Vorlagen verwenden und beliebig oft kopieren, dabei muss es auch möglich sein, dass die Namen der Tabellenblätter umgeändert werden können.

Am Ende des Tages entstehen so eine unbestimmte Anzahl an Tabellenblätter mit der Vorlage 1 und ebenso unbestimmte Anzahl mit der Vorlage 2.

Zur Abgabe soll dann ein Bericht entstehen, der alle Tabellenblätter mit Vorlage 1 zusammenfasst, und ein weiterer Bericht mit allen Tabellenblätter aus Vorlage 2.

Dies möchte ich mit einem VBA automatisieren, wenn der Button: "Drucke Bericht Vorlage 1" gedrückt wird, soll Excel alle Tabellenblätter aus Vorlage 1 suchen und das PrintPreview starten. Beim Button "Drucke Bericht Vorlage 2" dann das gleiche mit den Tabellenblättern aus Vorlage 2.

In Wahrheit hab ich noch wesentlich mehr Vorlagen, ich hab den Sachverhalt nur zusammen gekürzt fürs Beispiel.

Bei einer bestimmten Anzahl an Tabellenblättern ist es relativ einfach, da verwende ich:


Sub Ausdrucken ()

Sheets(Array("Blatt1", "Blatt2", "Blatt3", "Blatt4")).PrintPreview

End Sub


Ich hab mir schon gedacht, dass ich die einzelnen Vorlagen "markiere" in einer Zelle.
Beispiel:
Tabellenblatt "Vorlage 1" erhält in Zelle A1 ein "x"
Tabellenblatt "Vorlage 2" erhält in Zelle A2 ein "x"

dann hab ich mir so in die Richtung gedacht:

Sub Ausdrucken_Bericht_Vorlage1 ()

Durchsuche alle Tabellenblätter, wenn Tabellenblatt in A1 ein x hat, füge es zum Array dazu und dann mach das PrintPreview

End Sub


Sub Ausdrucken_Bericht_Vorlage2 ()



Durchsuche alle Tabellenblätter, wenn Tabellenblatt in B1 ein "x" hat, füge es zum Array dazu und dann mach das PrintPreview


End Sub

Auf diese Weise könnte ich es konfigurieren, mit welchem Button welche Tabellenblätter aus Vorlage xy gedruckt werden.


Gibt es hierfür eine Lösung?

Ich wäre um Eure Hilfe sehr dankbar. Ich muss regelmäßig solche sehr umfangreiche Berichte erstellen und damit könnte ich relativ viel Zeit sparen.

Danke für Eure Zeit.
Antworten Top
#2
Moin!

Z.B. so (in den Blättern steht in A1 der Name der jeweilen Vorlage)

Für Vorlage1:


Modul Modul1
Option Explicit 
 
Sub Druckvorschau() 
Select Case _
  MsgBox("Welche Vorlage soll gedruckt werden?" & vbNewLine & _
        "Ja für Vorlage1" & vbNewLine & _
        "Nein für Vorlage2" & vbNewLine & _
        "Abbrechen für Abbruch ;)", vbYesNoCancel) 
  Case 6 
    Call Druckauswahl("Vorlage1") 
  Case 7 
    Call Druckauswahl("Vorlage2") 
  Case 2 
    MsgBox "Abbruch durch Benutzer!" 
End Select 
End Sub 
 
Sub Druckauswahl(VorlagenName$) 
Dim AuswahlArray$() 
Dim ws As Worksheet 
Dim i& 
For Each ws In Worksheets 
  If ws.Range("A1").Text = VorlagenName Then 
    Redim Preserve AuswahlArray(i) 
    AuswahlArray(i) = ws.Name 
    i = i + 1 
  End If 
Next 
If i Then 
  Worksheets(AuswahlArray).PrintPreview 
Else 
  MsgBox "Keine " & VorlagenName & " gefunden" 
End If 
If i Then Worksheets(1).Select 
End Sub 
 


Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • excellover123
Antworten Top
#3
Danke Ralf das hat perfekt funktioniert!

Sorry für die späte Antwort, ich dachte ich hab das schon kommentiert Sad
Antworten Top


Gehe zu:


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