Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Datei per Button öffnen und direkt ausdrucken

Forumthread: Datei per Button öffnen und direkt ausdrucken

Datei per Button öffnen und direkt ausdrucken
17.12.2017 12:26:10
Kevin
Hallo,
hier habe ich noch eine Frage, es ist auch sicher die letzte heute! ;-)
Nun kann ich mittlerweile per Button div. Dateien (.xls, .pdf etc.) öffnen, diese werden mir dann auch im Vordergrund angezeigt. So soll es sein.. Gibt es einen Code dafür, die jeweilige Datei mit Klick auf den Button direkt auszudrucken und die geöffnete Datei wieder zu schließen? Unterschied xls und pdf?
Gruß!
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datei per Button öffnen und direkt ausdrucken
17.12.2017 12:53:21
Werner
Hallo Kevin,
wäre schön den Code zu sehen, mit dem du deine Datei öffnest.
Nach dem Öffnen per Makro, ist (wenn du nich noch was anderes per Code ausführst) deine geöffnete Datei auch die aktive Datei.
Ausdruck dann so:
ActiveWorkbook.PrintOut
Schließen dann so:
ActiveWorkbook.Close SaveChanges:=False 'ohne Speichern, True mit Speichern
Gruß Werner
Anzeige
AW: Datei per Button öffnen und direkt ausdrucken
17.12.2017 13:39:18
Kevin
Hallo Werner!
Habe es nun so lösen können:
Private Sub CommandButton12_Click()
Workbooks.Open ("H:\.......")
AchtiveWorkbook.Sheets("....").Activate
ActiveWorkbook.PrintOut
ActiveWorkbook.Close
End Sub

So druckt er direkt und schließt die Datei wieder damit der Desktop nicht zu voll wird.
Danke :)
Kann man, wenn mehrere Blätter gedruckt werden sollen, noch eine Abfrage dahintersetzen wie viele es sein sollen?
Anzeige
AW: Datei per Button öffnen und direkt ausdrucken
17.12.2017 14:20:04
Werner
Hallo Kevin,
bitte ohne Activate. Und hier mit einer Inputbox für die Anzahl der Ausdrucke.
Dim loAnzahl As Long
loAnzahl = Application.InputBox("Anzahl:", "Anzahl der Ausdrucke", 0, Type:=1)
If loAnzahl > 0 Then
Workbooks.Open ("H:\.......")
AchtiveWorkbook.Sheets("....").PrintOut Copies:=loAnzahl
ActiveWorkbook.Close
End If
Gruß Werner
Anzeige
AW: Datei per Button öffnen und direkt ausdrucken
17.12.2017 17:11:10
Kevin
Es will nicht so recht.. :D
Der Button in der UserForm soll bei Klick folgendes tun:
- Eingaben in vordefinierte Felder übernehmen
- Die UserForm gleichzeitig leeren
- Den Druckvorgang einleiten und das aktive Tabellenblatt drucken und vor dem Druck die Anzahl abfragen
- Die Datei komplett schließen, bisher schließt sich immer nur das Blatt.
Eigentlich müsste es doch gehen.. wo liegt der Fehler?
Private Sub CommandButton1_Click()
'Zuordnung Boxen
Sheets("Tabelle1").Range("B6") = UserForm1.TextBox6.Value
Sheets("Tabelle1").Range("B8") = UserForm1.TextBox3.Value
Sheets("Tabelle1").Range("B10") = UserForm1.ComboBox1.Value
Sheets("Tabelle1").Range("B11") = UserForm1.ComboBox2.Value
Sheets("Tabelle1").Range("C13") = UserForm1.ComboBox3.Value
Sheets("Tabelle1").Range("E13") = UserForm1.TextBox5.Value
'UserForm leeren
Unload Me
'Datei nach Druck schließen
ActiveWorkbook.Close SaveChanges:=True
'Anzahl der Druckblätter erfragen
Dim loAnzahl As Long
loAnzahl = Application.InputBox("Anzahl:", "Anzahl der Ausdrucke", 0, Type:=1)
If loAnzahl > 0 Then
Workbooks.Open ("H:\...\...xlsm")
AchtiveWorkbook.Sheets("Tabelle1").PrintOut Copies:=loAnzahl
ActiveWorkbook.Close
End If
End Sub

Anzeige
AW: Datei per Button öffnen und direkt ausdrucken
17.12.2017 17:25:21
Werner
Hallo Kevin,
warum eigentlich immer nur scheibchenweise, das hier hat jetzt nicht wirklich so viel mit dem Eingangsbeitrag zu tun. Es ergeben sich einige Fragen, siehe Code.
Private Sub CommandButton1_Click()
'Zuordnung Boxen
'### Sind hier mehrere Dateien offen? Wenn ja, auf welcher
'### Datei befindest du dich?
Sheets("Tabelle1").Range("B6") = UserForm1.TextBox6.Value
Sheets("Tabelle1").Range("B8") = UserForm1.TextBox3.Value
Sheets("Tabelle1").Range("B10") = UserForm1.ComboBox1.Value
Sheets("Tabelle1").Range("B11") = UserForm1.ComboBox2.Value
Sheets("Tabelle1").Range("C13") = UserForm1.ComboBox3.Value
Sheets("Tabelle1").Range("E13") = UserForm1.TextBox5.Value
'UserForm leeren
Unload Me
'Datei nach Druck schließen
'## Wenn nur eine Datei offen ist, dann versuchst du
'## hier die Datei zu schließen in der sich dieser Code
'## befindet. Gleichzeitig willst du aber den folgenden
'## Code noch ausführen, das kann nicht funktionieren
ActiveWorkbook.Close SaveChanges:=True
'Anzahl der Druckblätter erfragen
Dim loAnzahl As Long
loAnzahl = Application.InputBox("Anzahl:", "Anzahl der Ausdrucke", 0, Type:=1)
If loAnzahl > 0 Then
Workbooks.Open ("H:\...\...xlsm")
AchtiveWorkbook.Sheets("Tabelle1").PrintOut Copies:=loAnzahl
ActiveWorkbook.Close
End If
End Sub
Gruß Werner
Anzeige
AW: Datei per Button öffnen und direkt ausdrucken
17.12.2017 18:15:00
Kevin
Habe nach deiner Nachricht etwas getüftelt - es läuft wie gewollt! Danke! :)
Private Sub CommandButton2_Click()
Workbooks.Open ("H:\....xlsx")
ActiveWorkbook.Sheets("Tabelle1").Activate
Dim loAnzahl As Long
loAnzahl = Application.InputBox("Anzahl:", "Anzahl der Ausdrucke", 1, Type:=1)
If loAnzahl > 0 Then
ActiveWorkbook.Sheets("Tabelle1").PrintOut Copies:=loAnzahl
End If
ThisWorkbook.Save
Application.Quit
End Sub

Anzeige
AW: Datei per Button öffnen und direkt ausdrucken
17.12.2017 18:22:46
Werner
Hallo Kevin,
das hier weglassen
ActiveWorkbook.Sheets("Tabelle1").Activate
Weiter unten im Code sprichst du doch das Blatt, welches du ausdrucken willst, direkt an. Select und Activate ist zu 99 Prozent unnötig und macht den Code nur langsamer.
Zum Select siehe auch mal hier:
http://www.online-excel.de/excel/singsel_vba.php?f=78
Gruß Werner
Anzeige
AW: Datei per Button öffnen und direkt ausdrucken
17.12.2017 18:47:26
Kevin
Entschuldige, du hast es ja sogar vorhin schon geschrieben - überlesen.. etwas viel heute ;-)
Klappt wunderbar. Seite schaue ich mir später am Abend mal an und versuche es mir einzuprägen ;-)
Gerne u. Danke für die Rückmeldung. o.w.T.
17.12.2017 19:05:20
Werner
;
Anzeige
Anzeige

Infobox / Tutorial

Dateien per Button öffnen und direkt ausdrucken


Schritt-für-Schritt-Anleitung

  1. Button erstellen: Füge einen Button in Dein Excel-Dokument ein, indem Du die Entwicklertools aktivierst und einen Button über die Steuerungselemente platzierst.

  2. VBA-Editor öffnen: Klicke mit der rechten Maustaste auf den Button und wähle "Code anzeigen". Dies öffnet den VBA-Editor.

  3. Code zum Öffnen und Drucken: Füge folgenden Code in das Codefenster ein:

    Private Sub CommandButton_Click()
        Dim loAnzahl As Long
        loAnzahl = Application.InputBox("Anzahl:", "Anzahl der Ausdrucke", 1, Type:=1)
        If loAnzahl > 0 Then
            Workbooks.Open ("H:\DeinPfad\DeineDatei.xlsx")
            ActiveWorkbook.Sheets("Tabelle1").PrintOut Copies:=loAnzahl
            ActiveWorkbook.Close SaveChanges:=False
        End If
    End Sub
  4. Speichern: Stelle sicher, dass Du Deine Arbeitsmappe als .xlsm-Datei speicherst, damit die Makros funktionieren.


Häufige Fehler und Lösungen

  • Fehler: ActiveWorkbook ist nicht definiert
    Lösung: Überprüfe, ob Du den richtigen Namen für die Arbeitsmappe verwendest und dass sie geöffnet ist, bevor Du versuchst, sie zu drucken.

  • Fehler: Drucker nicht gefunden
    Lösung: Vergewissere Dich, dass dein Drucker ordnungsgemäß angeschlossen und als Standarddrucker eingestellt ist.

  • Fehler: Eingabe von 0 bei der Anzahl der Kopien
    Lösung: Stelle sicher, dass der Benutzer eine positive Zahl eingibt. Du kannst den Code so anpassen, dass er eine Fehlermeldung ausgibt, wenn 0 eingegeben wird.


Alternative Methoden

  • Direktes Drucken ohne VBA: Du kannst auch die Datei manuell öffnen und im Menü "Datei" -> "Drucken" die Anzahl der Kopien angeben, wenn Du den VBA-Ansatz nicht verwenden möchtest.

  • Verwendung von Excel-Add-Ins: Es gibt verschiedene Add-Ins, die das Drucken von Excel-Dateien automatisieren, insbesondere wenn Du regelmäßig die gleichen Dokumente drucken musst.


Praktische Beispiele

  1. Drucken mehrerer Blätter: Wenn Du die Anzahl der Kopien abfragen möchtest, kannst Du den folgenden Code verwenden:

    Dim loAnzahl As Long
    loAnzahl = Application.InputBox("Anzahl der Ausdrucke:", "Drucken", 1, Type:=1)
    If loAnzahl > 0 Then
        ActiveWorkbook.Sheets("Tabelle1").PrintOut Copies:=loAnzahl
    End If
  2. Drucken von PDF-Dateien: Um eine PDF-Datei zu drucken, kannst Du den Shell-Befehl verwenden:

    Shell "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe /t ""H:\DeinPfad\DeineDatei.pdf"" ""Druckername""", vbHide

Tipps für Profis

  • Vermeide Activate und Select: Diese Befehle machen Deinen Code langsamer. Greife stattdessen direkt auf die Objekte zu, wie im Beispiel gezeigt.

  • Fehlerbehandlung einbauen: Verwende On Error Resume Next, um Fehler in Deinem Code zu handhaben, ohne dass das Makro stoppt.

  • Benutzerfreundlichkeit verbessern: Füge informative Nachrichten oder Dialoge hinzu, um den Benutzer über den Fortschritt und mögliche Fehler zu informieren.


FAQ: Häufige Fragen

1. Wie kann ich mehrere Dateien gleichzeitig drucken?
Du kannst eine Schleife (For-Next) verwenden, um mehrere Dateien zu öffnen und sie nacheinander zu drucken.

2. Was ist der Unterschied zwischen dem Drucken von Excel und PDF?
Das Drucken von Excel erfordert, dass die Datei in Excel geöffnet ist, während PDF-Dokumente mit einem externen Programm (z.B. Adobe Reader) gedruckt werden können.

3. Ist es möglich, den Drucker im Code festzulegen?
Ja, Du kannst den Standarddrucker ändern oder einen bestimmten Drucker im Code angeben, indem Du die ActivePrinter-Eigenschaft verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige