Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1640to1644
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

Druckaufgaben per VBA (verkettet)

Druckaufgaben per VBA (verkettet)
18.08.2018 16:07:29
Meineke
Hallo zusammen, ich habe eine weitere Frage an euch :-)
Ich habe ein Tabellenblatt zu einer Stammdatenliste für Kunden geformt. In dieser ist neben persönlichen Angaben zusätzlich enthalten, welche Leistungen dieser Kunde empfängt (diese Leistungen sind mit "1" und "0" als wahr bzw. nicht wahr an/abzuwählen.
In einem weiteren Tabellenblatt (Druckdaten_Kunde1) habe ich Vordrucke entworfen.
Um diese Vordrucke drucken zu können habe ich einen Button erstellt, der folgende Befehle ausübt:
Sub Druckdaten_Kunde1()
If ActiveSheet.Range("L7").Value = 1 Then
MsgBox "Achtung, dieser Kunde erhält Leistungen aus dem SGB 5! Bitte drucken Sie die benö _
tigten Leistungsnachweise über das Programm MEDIFOX aus. Vielen Dank!"
End If
Sheets("Druckdaten_Kunde1").Activate
If Sheets("Kunden-Stammdaten").Range("O7") = 1 Then
Sheets("Druckdaten_Kunde1").PageSetup.PrintArea = "B2:BB33"
Application.Dialogs(xlDialogPrint).Show
Sheets("Druckdaten_Kunde1").PageSetup.PrintArea = False
End If
If Sheets("Kunden-Stammdaten").Range("N7") = 1 Then
Sheets("Druckdaten_Kunde1").PageSetup.PrintArea = "B39:BB70"
Application.Dialogs(xlDialogPrint).Show
Sheets("Druckdaten_Kunde1").PageSetup.PrintArea = False
End If
If Sheets("Kunden-Stammdaten").Range("M7") = 1 Then
Sheets("Druckdaten_Kunde1").PageSetup.PrintArea = "B75:CK119"
Application.Dialogs(xlDialogPrint).Show
Sheets("Druckdaten_Kunde1").PageSetup.PrintArea = False
End If
End Sub
..........
Jetzt habe ich aus Nutzer-Sicht folgendes Problem:
Wenn ich in den Druckeinstellungen nicht explizit vorgebe, das "Nur Auswahl" sowie "Blatt auf einer Seite darstellen" zum Tragen kommt, dann kann es sein, das die Druckdaten auf mehrere Blätter verteilt, oder der untere Teil auf eine weitere Seite verschoben wird. Kann man sowas direkt im Makro verankern?
Falls ja, dann würde ich im Makro gern auf "Sheets("Druckdaten_Kunde1").Activate" und auf "Application.Dialogs(xlDialogPrint).Show" verzichten!
Vielen Dank für eure Mühe!
Gruß Olli

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Druckaufgaben per VBA (verkettet)
18.08.2018 16:20:23
Sepp
Hallo Olli,
versuche es so.
Sub Druckdaten_Kunde1()
  If ActiveSheet.Range("L7").Value = 1 Then
    MsgBox "Achtung, dieser Kunde erhält Leistungen aus dem SGB 5!" & _
      "Bitte drucken Sie die benötigten Leistungsnachweise über das Programm MEDIFOX aus. Vielen Dank!"
  End If
  With Sheets("Druckdaten_Kunde1")
    With .PageSetup
      .FitToPagesTall
      .FitToPagesWide
    End With
    If Sheets("Kunden-Stammdaten").Range("O7") = 1 Then
      .PageSetup.PrintArea = "B2:BB33"
      .PrintOut Collate:=True, IgnorePrintAreas:=False
      .PageSetup.PrintArea = False
    End If
    If Sheets("Kunden-Stammdaten").Range("N7") = 1 Then
      .PageSetup.PrintArea = "B39:BB70"
      .PrintOut Collate:=True, IgnorePrintAreas:=False
      .PageSetup.PrintArea = False
    End If
    If Sheets("Kunden-Stammdaten").Range("M7") = 1 Then
      .PageSetup.PrintArea = "B75:CK119"
      .PrintOut Collate:=True, IgnorePrintAreas:=False
      .PageSetup.PrintArea = False
    End If
  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 16 - mit VBAHTML 12.6.0


 ABCDEF
1Gruß Sepp
2
3

Anzeige
AW: Druckaufgaben per VBA (verkettet)
18.08.2018 16:25:52
Meineke
Hallo Sepp,
VBA gibt mir dann promt folgende Meldung aus:
Laufzeitfehler '1004'
Die FitToPagesTall-Methode des PageSetup-Objektes konnte nicht ausgeführt werden.
Gruß Olli
AW: Druckaufgaben per VBA (verkettet)
18.08.2018 16:27:44
Sepp
Hallo Olli,
sorry, da het noch was gefehlt.
Sub Druckdaten_Kunde1()
  If ActiveSheet.Range("L7").Value = 1 Then
    MsgBox "Achtung, dieser Kunde erhält Leistungen aus dem SGB 5!" & _
      "Bitte drucken Sie die benötigten Leistungsnachweise über das Programm MEDIFOX aus. Vielen Dank!"
  End If
  With Sheets("Druckdaten_Kunde1")
    With .PageSetup
      .FitToPagesTall = 1
      .FitToPagesWide = 1
    End With
    If Sheets("Kunden-Stammdaten").Range("O7") = 1 Then
      .PageSetup.PrintArea = "B2:BB33"
      .PrintOut Collate:=True, IgnorePrintAreas:=False
      .PageSetup.PrintArea = False
    End If
    If Sheets("Kunden-Stammdaten").Range("N7") = 1 Then
      .PageSetup.PrintArea = "B39:BB70"
      .PrintOut Collate:=True, IgnorePrintAreas:=False
      .PageSetup.PrintArea = False
    End If
    If Sheets("Kunden-Stammdaten").Range("M7") = 1 Then
      .PageSetup.PrintArea = "B75:CK119"
      .PrintOut Collate:=True, IgnorePrintAreas:=False
      .PageSetup.PrintArea = False
    End If
  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 16 - mit VBAHTML 12.6.0


 ABCDEF
1Gruß Sepp
2
3

Anzeige
AW: Druckaufgaben per VBA (verkettet)
18.08.2018 16:42:02
Meineke
Ja genial, das klappt super! Danke dir!
Ist es weiterhin möglich, diese "im Maximum" 3 Druckaufträge zu einen Druckauftrag zu minimieren, um nur einmal bestätigen zu müssen?
AW: Druckaufgaben per VBA (verkettet)
18.08.2018 16:50:45
Sepp
Hallo Olli,
bei .PrintOut wird doch sofort gedruckt! Welche bestätigung?
 ABCDEF
1Gruß Sepp
2
3

Anzeige
AW: Druckaufgaben per VBA (verkettet)
18.08.2018 16:56:25
Meineke
Hallo Sepp,
sorry, da war meine Tastatur schneller als mein Hirn...
Ich meinte natürlich, ob man daraus einen einzelnen "Druckauftrag erstellen kann, um nur einen "PDF-Ausdruck" zu generieren!
Danke der Nachfrage!
AW: Druckaufgaben per VBA (verkettet)
18.08.2018 16:59:32
Sepp
Hallo Olli,
dazu müsste man anders Vorgehen.
Du müsstest die einzelnen Druckbereiche auf 3 Tabellen verteilen und diese dann gemeinsam als PDF drucken.
 ABCDEF
1Gruß Sepp
2
3

Anzeige
AW: Druckaufgaben per VBA (verkettet)
18.08.2018 17:03:02
Meineke
Okay, dann scheidet diese Option aus, da der Kundenstamm für bis zu 200 Kunden ausgelegt sein soll und ich pro Kunden schon auf 3 Tabellen komme :-(
Ich denke wenn es noch mehr Tabellen werden, dann scheiden handelsübliche Office-Maschinen langsam aus O_O
Oder hast du eine "andere" Idee?
AW: Druckaufgaben per VBA (verkettet)
18.08.2018 17:06:23
Meineke
Zumal diese "Krux" ja nur bei einen PDF-Drucker auftritt...Ist den Aufwand vermutlich nicht Wert....
Ansonsten bedanke ich mich recht recht herzlich!
Gruß Olli
AW: Druckaufgaben per VBA (verkettet)
18.08.2018 17:10:21
Meineke
HALT STOP *lach*
eine Sache hätte ich doch noch...
Jeder Kunde besitzt jetzt seinen eigenen Butten "Druckdaten".
Wenn ich jetzt als Nutzer ganz faul bin und möchte alle Kunden auf einmal drucken, wo doch bei jedem einzelnen Kunden ein Makro abläuft...kann ich einen "Drucke ALLES" Button erzeugen? also für wiederkehrende Monatliche Ausdrucke.
Gruß Olli
Anzeige
AW: Druckaufgaben per VBA (verkettet)
18.08.2018 17:13:39
Sepp
Hallo Olli,
wie kann man den die zu druckenden Tabellen identifizieren?
 ABCDEF
1Gruß Sepp
2
3

Anzeige
AW: Druckaufgaben per VBA (verkettet)
18.08.2018 17:22:18
Meineke
Hallo Sepp,
die zu druckenden Tabellen sind stumpf benannt:
Druckdaten_Kunde1
Druckdaten_Kunde2
Druckdaten_Kunde3
Druckdaten_Kunde4
Druckdaten_Kunde5
Druckdaten_Kunde6
Druckdaten_Kunde7
Druckdaten_Kunde8
Druckdaten_Kunde9
Druckdaten_Kunde10
bis 200
Gruß Olli
AW: Druckaufgaben per VBA (verkettet)
18.08.2018 17:25:18
Meineke
Die dort benötigten Daten werden per Verweise aus dem Stammdaten-Blatt erhoben.
AW: Druckaufgaben per VBA (verkettet)
18.08.2018 17:29:11
Sepp
Hallo Olli,
Sub Druckdaten_Kunde1()
  Dim objWS As Worksheet

  For Each objWS In ThisWorkbook.Worksheets
    With objWS
      If .Name Like "Druckdaten_*" Then
        With .PageSetup
          .FitToPagesTall = 1
          .FitToPagesWide = 1
        End With
        If Sheets("Kunden-Stammdaten").Range("O7") = 1 Then
          .PageSetup.PrintArea = "B2:BB33"
          .PrintOut Collate:=True, IgnorePrintAreas:=False
          .PageSetup.PrintArea = False
        End If
        If Sheets("Kunden-Stammdaten").Range("N7") = 1 Then
          .PageSetup.PrintArea = "B39:BB70"
          .PrintOut Collate:=True, IgnorePrintAreas:=False
          .PageSetup.PrintArea = False
        End If
        If Sheets("Kunden-Stammdaten").Range("M7") = 1 Then
          .PageSetup.PrintArea = "B75:CK119"
          .PrintOut Collate:=True, IgnorePrintAreas:=False
          .PageSetup.PrintArea = False
        End If
      End If
    End With
  Next
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 16 - mit VBAHTML 12.6.0

Bei 200+ Kunden würde ich mir aber einen anderen Aufbau überlegen oder gleich auf Access umsteigen.
In XL würde ich genau 1 Blatt anlegen in dem alle Kunden mit ihren Daten erfasst sind.
Die Auswertung/Darstellung auf den anderen Blättern, würde ich per Formeln, Pivot oder PowerQuerry erledigen.
 ABCDEF
1Gruß Sepp
2
3

Anzeige
AW: Druckaufgaben per VBA (verkettet)
18.08.2018 17:34:34
Meineke
Alles klar Sepp,
danke dir! Ich schau mir deine Ideen einmal an!
Gruß Olli
AW: Druckaufgaben per VBA (verkettet)
18.08.2018 18:28:17
Meineke
Hallo Sepp,
ich habe dein Program gerade versucht zu testen, allerdings druckt er von Junde1 die erste Seite ( von 3)
und geht sofort auf debugging!
Fehler:
Sub Monatsausdruck()
Dim objWS As Worksheet
For Each objWS In ThisWorkbook.Worksheets
With objWS
If .Name Like "Druckdaten_*" Then
With .PageSetup
.FitToPagesTall = 1
.FitToPagesWide = 1
End With
If Sheets("Kunden-Stammdaten").Range("O7") = 1 Then
.PageSetup.PrintArea = "B2:BB33"
.PrintOut Collate:=True, IgnorePrintAreas:=False
.PageSetup.PrintArea = False
End If
If Sheets("Kunden-Stammdaten").Range("N7") = 1 Then
.PageSetup.PrintArea = "B39:BB70"
.PrintOut Collate:=True, IgnorePrintAreas:=False
.PageSetup.PrintArea = False
End If
If Sheets("Kunden-Stammdaten").Range("M7") = 1 Then
.PageSetup.PrintArea = "B75:CK119"
.PrintOut Collate:=True, IgnorePrintAreas:=False
.PageSetup.PrintArea = False
End If
End If
End With
Next
End Sub

Anzeige
AW: Druckaufgaben per VBA (verkettet)
18.08.2018 18:46:37
Sepp
Hallo Olli,
wie lautet die Fehlermeldung?
schreibe statt = False, = ""
 ABCDEF
1Gruß Sepp
2
3

Anzeige
AW: Druckaufgaben per VBA (verkettet)
18.08.2018 19:00:29
Meineke
Hallo Sepp,
das hat auf Anhieb funktioniert! Kannst du mir erklären, warum?
Danke!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige