Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA: Makro zum Drucken, Standarddrucker

Forumthread: VBA: Makro zum Drucken, Standarddrucker

VBA: Makro zum Drucken, Standarddrucker
22.09.2004 15:19:13
Arnd
Hallo,
ich habe mir ein Makro zusammengebastelt, mit dem ich einen bestimmten Bereich einmal drucken kann.
Soweit so schön, nun möchte ich aber, dass beim Ausdrucken immer der Standarddrucker verwandt wird und nicht der zuletzt markierte. Ich möchte das automatisch einstellen können, ohne dafür manuell oder automatisch den Druckdialog öffnen zu müssen und dann per Hand den Drucker auswählen zu müssen.
Kann mir da jemand einen Tipp geben?
Vielen Dank
Arnd
Anzeige
AW: VBA: Makro zum Drucken, Standarddrucker
ypsilon
hi Arnd,
so in etwa:
aber du bekommst ne fehlermeldung wenn kein standarddrucker definiert ist !
Option Explicit
Declare

Function GetProfileString Lib "kernel32" Alias "GetProfileStringA" _
(ByVal lpAppName As String, ByVal lpKeyName As String, ByVal lpDefault As String, _
ByVal lpReturnedString As String, ByVal nSize As Long) As Long

Function GetDefaultPrinter() As String
Dim TempName As String
Dim DeviceNr As Long
TempName = String(1024, 0)
DeviceNr = GetProfileString("windows", "device", 0&, TempName, 1024)
GetDefaultPrinter = Left(TempName, InStr(TempName, ",") - 1)
End Function


Sub Drucken_mit_Standarddrucker()
ActiveWindow.SelectedSheets.PrintOut , ActivePrinter:=GetDefaultPrinter
End Sub

cu Micha
Anzeige
AW: VBA: Makro zum Drucken, Standarddrucker
yps
*grummel*
Declare gehört vor Function
cu Micha
AW: VBA: Makro zum Drucken, Standarddrucker
22.09.2004 16:59:16
Arnd
Hallo Micha,
danke für deine schnelle Antwort. Ich muss jetzt leider weg und kann es nicht direkt ausprobieren.
Wäre nett, wenn du vielleicht nochmal im Thread nachschauen könntest, ob ich noch eine Nachfrage hatte.
Vielen Dank
Arnd
Anzeige
AW: VBA: Makro zum Drucken, Standarddrucker
23.09.2004 09:12:57
Arnd
Guten Morgen Micha,
vielen Dank für den Code. Scheint zu klappen.
Ich habe noch eine Frage zu der von dir angesprochenden Fehlermeldung.
Ich habe es jetzt hier nicht geschafft, mein System so zu konfigurieren, dass ich keinen Standarddrucker eingestellt habe. Hat man nicht sobald man einen Drucker installiert hat, diesen automatisch als Standarddrucker festgelegt?
Aufgrund welchen Rückgabewertes von:
TempName = String(1024, 0)
DeviceNr = GetProfileString("windows", "device", 0&, TempName, 1024)
GetDefaultPrinter = Left(TempName, InStr(TempName, ",") - 1)
kann ich feststellen, dass kein Standarddrucker eingerichtet ist?
Will diesen Fehler abfangen, indem ich dann das Druckdialogfeld öffnen will, aber dazu muss ich ja wissen, wie sich ein nicht eingerichteter Standarddrucker erkennen läßt :-).
Falls du das selber nachschauen musst, werde ich es einfach heute abend zu Hause versuchen und bei meinem Rechner mal alle Drucker entfernen.
Gruß
Arnd
Anzeige
AW: VBA: Makro zum Drucken, Standarddrucker
yps
hi Arnd,
das müsste klappen:
If DeviceNr &gt 0 Then
GetDefaultPrinter = Left(TempName, InStr(TempName, ",") - 1)
Else
msgbox "Kein Standarddrucker eingestellt"
End If
cu Micha
AW: VBA: Makro zum Drucken, Standarddrucker
Arnd
Hallo,
ich habe deine Bedingung eingebaut und möchte nun das Dialogfenster Drucken öffnen. Welchen Objekttyp muss ich als Rückgabewert erwarten?

If DeviceNr &gt 0 Then
GetDefaultPrinter = Left(TempName, InStr(TempName, ",") - 1)
Else
MsgBox "Kein Standarddrucker eingestellt"
? = DialogDrucken()
End If

Sub DialogDrucken()
Const SeiteVon = 1
Const SeiteBis = 1
Const Kopien = 1
Application.Dialogs(xlDialogPrint).Show arg1:=2, arg2:=SeiteVon, arg3:=SeiteBis, arg4:=Kopien

Gruß Arnd
Anzeige
AW: VBA: Makro zum Drucken, Standarddrucker
Arnd
Hallo,
ich habe deine Bedingung eingebaut und möchte nun das Dialogfenster Drucken öffnen. Welchen Objekttyp muss ich als Rückgabewert erwarten?

If DeviceNr &gt 0 Then
GetDefaultPrinter = Left(TempName, InStr(TempName, ",") - 1)
Else
MsgBox "Kein Standarddrucker eingestellt"
? = DialogDrucken()
End If

Sub DialogDrucken()
Const SeiteVon = 1
Const SeiteBis = 1
Const Kopien = 1
Application.Dialogs(xlDialogPrint).Show arg1:=2, arg2:=SeiteVon, arg3:=SeiteBis, arg4:=Kopien

Gruß Arnd
Anzeige
AW: VBA: Makro zum Drucken, Standarddrucker
yps
hi Arnd,
mal im ganzen:

Function GetDefaultPrinter() As String
Dim TempName As String
Dim DeviceNr As Long
TempName = String(1024, 0)
DeviceNr = GetProfileString("windows", "device", 0&, TempName, 1024)
If DeviceNr > 0 Then
GetDefaultPrinter = Left(TempName, InStr(TempName, ",") - 1)
Else
GetDefaultPrinter = Application.Dialogs(xlDialogPrinterSetup).Show
End If
End Function


Sub Drucken_mit_Standarddrucker_oder_mit_Auswahldrucker()
ActiveWindow.SelectedSheets.PrintOut , ActivePrinter:=GetDefaultPrinter
End Sub

cu Micha
Anzeige
AW: VBA: Makro zum Drucken, Standarddrucker
Arnd
Hallo,
danke, ich habe gerade meinen Denkfehler bemerkt.
Schönen Tag noch
;
Anzeige
Anzeige

Infobox / Tutorial

Makro zum Drucken mit Standarddrucker in Excel


Schritt-für-Schritt-Anleitung

Um ein Excel-Makro zu erstellen, das mit dem Standarddrucker druckt, kannst du die folgenden Schritte befolgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Einfügen eines neuen Moduls: Klicke mit der rechten Maustaste auf VBAProject (DeinDateiname) und wähle Einfügen > Modul.

  3. Code einfügen: Kopiere und füge den folgenden Code in das Modul ein:

    Option Explicit
    
    Declare Function GetProfileString Lib "kernel32" Alias "GetProfileStringA" _
    (ByVal lpAppName As String, ByVal lpKeyName As String, ByVal lpDefault As String, _
    ByVal lpReturnedString As String, ByVal nSize As Long) As Long
    
    Function GetDefaultPrinter() As String
        Dim TempName As String
        Dim DeviceNr As Long
        TempName = String(1024, 0)
        DeviceNr = GetProfileString("windows", "device", 0&, TempName, 1024)
    
        If DeviceNr > 0 Then
            GetDefaultPrinter = Left(TempName, InStr(TempName, ",") - 1)
        Else
            MsgBox "Kein Standarddrucker eingestellt"
            GetDefaultPrinter = ""
        End If
    End Function
    
    Sub Drucken_mit_Standarddrucker()
        If GetDefaultPrinter <> "" Then
            ActiveWindow.SelectedSheets.PrintOut , ActivePrinter:=GetDefaultPrinter
        Else
            Application.Dialogs(xlDialogPrinterSetup).Show
        End If
    End Sub
  4. Makro ausführen: Schließe den VBA-Editor und führe das Makro über Entwicklertools > Makros aus.

  5. Drucken: Das Makro wird den Standarddrucker verwenden oder das Druckdialogfeld öffnen, wenn kein Standarddrucker festgelegt ist.


Häufige Fehler und Lösungen

  • Fehlermeldung über fehlenden Standarddrucker: Wenn kein Standarddrucker definiert ist, zeigt das Makro eine Fehlermeldung an. Stelle sicher, dass du mindestens einen Drucker installiert hast und diesen als Standard festlegst.

  • VBA-Fehler in der Funktion: Achte darauf, dass die Declare-Anweisung vor der Funktion GetDefaultPrinter steht.

  • Druckdialog öffnet sich nicht: Wenn der Standarddrucker nicht erkannt wird, kann das Makro das Druckdialogfeld nicht öffnen. Stelle sicher, dass die GetDefaultPrinter-Funktion korrekt funktioniert.


Alternative Methoden

Falls du keine VBA-Lösung nutzen möchtest, kannst du auch direkt in Excel über die Druckeinstellungen einen Standarddrucker festlegen. Gehe dazu zu:

  1. Datei > Drucken.
  2. Wähle den gewünschten Drucker aus der Drucker-Liste aus.
  3. Setze ihn als Standarddrucker.

Praktische Beispiele

Hier ist ein praktisches Beispiel, wie du das Makro verwenden kannst:

  1. Erstelle eine Excel-Tabelle mit Daten, die du drucken möchtest.
  2. Führe das oben genannte Makro Drucken_mit_Standarddrucker aus.
  3. Überprüfe, ob der Druck erfolgreich ist und der richtige Drucker verwendet wurde.

Tipps für Profis

  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung in deinem VBA-Code, um unerwartete Situationen besser zu handhaben.

  • Druckoptionen anpassen: Du kannst die PrintOut-Methode anpassen, um spezifische Druckoptionen wie Seitenzahlen oder Kopien festzulegen.

  • Druckbereiche festlegen: Stelle sicher, dass der Druckbereich in deiner Excel-Datei korrekt definiert ist, um die gewünschten Daten zu drucken.


FAQ: Häufige Fragen

1. Wie kann ich den Standarddrucker in Excel festlegen?
Du kannst den Standarddrucker über die Windows-Druckereinstellungen festlegen. Gehe zu Systemsteuerung > Geräte und Drucker und wähle den gewünschten Drucker als Standarddrucker aus.

2. Was passiert, wenn kein Standarddrucker vorhanden ist?
Das Makro wird eine Fehlermeldung anzeigen und das Druckdialogfeld öffnen, damit du einen Drucker auswählen kannst.

3. Welche Excel-Version wird benötigt?
Die oben genannten VBA-Codes sind mit Excel 2010 und späteren Versionen kompatibel.

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