Search  

   

Latest News  

Problemstellung:Wenn man Etiketten drucken will steht man oft vor einigen Problemen.1. Man möchte nur ein paar Etiketten drucken und beim nächsten Druck braucht man wieder   ein neues Blatt weil freie...
   

Latest Forumposts  

  • Keine Beiträge vorhanden
   

Kommentare  

Tut mir leid Hella, ich kann Dir nicht folgen? 13.04.2017 - 14.04.2017 ergibt bei mir 1 13.04.2017 -...
Gast - Hella
Hallo, Berechne wie folgt, ob "zu früh" oder "zu spät" Rückmeldet. Früher sollte auch mit negativer ...
Gast - Hella
Hallo, mit negativen Werten meine ich z.B. -5 Tage (ohne Wochenende) u.ä. Zur Zeit wird nur die 0 au...
Hallo Hella, wie negative Werte? Kannst Du es erläutern was Du machen willst? Gruß Tommy
Gast - Hella
Hallo, ich bräuchte auch negative Werte bei der Anzahl, wie kann man das realisieren? Liebe Grüße He...
   

Counter  

1113835
HeuteHeute566
GesternGestern1041
Diese WocheDiese Woche566
Dieser MonatDieser Monat22047
GesamtGesamt1113835
Highest 07.12.2017 : 1250
US
UNITED STATES
US

This page uses the IP-to-Country Database provided by WebHosting.Info (http://www.webhosting.info), available from http://ip-to-country.webhosting.info

   

Download Statistik  

Diese Site enthält 187 Downloads in 30 Kategorien. Gesamtdownloads bisher: 234281
   
Free live stats and visitor counter for Joomla, Wordpress, Drupal, Magento and Prestashop
   

Login

   

User Online

Total: 63 Members: 0 Guests: 63
No members online
   

Beiträge

Änderung des Standarddruckers mittels VBA

Bewertung:  / 3
SchwachSuper 
Details

Problemstellung:
Wie kann ich beim Berichtsdruck den Standarddrucker wechseln, ohne Druckerdialog?

Voraussetzungen:

Da es das Printer-Objekt erst ab AXP gibt, ist das Bsp nur unter AXP und A03 lauffähig.
A07 wurde nicht getestet

 

Funktionsweise:
Es werden 2 Möglichkeiten vorgestellt:

1. Einlesen allen verfügbaren Drucker und einiger Eigenschaften in eine Tabelle
2. Alle verfügbaren Drucker werden direkt in eine Kombobox eingelesen.

Das Sub "GetAllPrinters" liest alle im System verfügbaren Drucker in die Tabelle "tbl_Printers" ein.

Public Sub GetAllPrinters()
'---------------------------------------------------------------------------------------
' Procedure : GetAllPrinters
' DateTime  : 05.08.2005 15:35
' Author    : TommyK
' Purpose   : Liest alle verfügbaren Drucker in die angegebene Tabelle ein
' Inputs    : ohne
' Output    :
' Example   : GetAllPrinters
'---------------------------------------------------------------------------------------
    On Error GoTo GetAllPrinters_Error
    Dim prtLoop As Printer
    Dim rst As DAO.Recordset
    Dim i As Integer
        i = 0
    CurrentDb.Execute ("DELETE tbl_Printers.ID FROM tbl_Printers;")
    Set rst = CurrentDb.OpenRecordset("tbl_Printers")
    For Each prtLoop In Application.Printers
        With prtLoop
            rst.AddNew
            rst!ID_Index = i
            rst!DeviceName = .DeviceName
            rst!DriverName = .DriverName
            rst!Port = .Port
            rst!PaperBin = .PaperBin
            rst!PaperSize = .PaperSize
            rst!ColorMode = .ColorMode
            rst!PrintQuality = .PrintQuality
            rst!Ausrichtung = .Orientation
            rst.Update
        End With
        i = i + 1
    Next prtLoop
    rst.Close: Set rst = Nothing
    On Error GoTo 0
    Exit Sub
GetAllPrinters_Error:
    Dim strErrString As String
    strErrString = "Error Information..." & vbCrLf
    strErrString = strErrString & "Error#: " & Err.Number & vbCrLf
    strErrString = strErrString & "Description: " & Err.Description
    MsgBox strErrString, vbCritical + vbOKOnly, "Error in procedure GetAllPrinters of Modul mod_Printers"
End Sub

Diese Methode hat den Vorteil das noch mehrere Eigenschaften der Drucker mit eingelesen werden.
Die genaue Bedeutung der Konstanten ist im Objektkatalog des Printer-Objekts nachzuschlagen.
In der Bsp-DB gehe ich nur auf die Eigenschaft "Ausrichtung" und "Anzahl der Kopien" ein.
Die 2. Möglichkeit ist das Einlesen aller Drucker, mittels AddItem-Methode in ein Kombinationsfeld, Sub "FillPrinter"

Public Sub FillPrinter(ctlPrinterkombi As ComboBox)
'---------------------------------------------------------------------------------------
' Procedure : FillPrinter
' DateTime  : 05.08.2005 15:33
' Author    : TommyK
' Purpose   : Liest alle verfügbaren Drucker in die angegebene Kombobox ein
' Inputs    : ctlPrinterkombi = Name des Kombifeldes
' Output    :
' Example   : FillPrinter Me.MeinKombo
'---------------------------------------------------------------------------------------
   On Error GoTo FillPrinter_Error
    ctlPrinterkombi.RowSource = ""
    Dim prtLoop As Printer
    Dim i As Integer
        i = 0
    For Each prtLoop In Application.Printers
        With prtLoop
            ctlPrinterkombi.AddItem i & ";" & .DeviceName
        End With
        i = i + 1
    Next prtLoop
   On Error GoTo 0
   Exit Sub
FillPrinter_Error:
    Dim strErrString As String
    strErrString = "Error Information..." & vbCrLf
    strErrString = strErrString & "Error#: " & Err.Number & vbCrLf
    strErrString = strErrString & "Description: " & Err.Description
    MsgBox strErrString, vbCritical + vbOKOnly, "Error in procedure FillPrinter of Modul mod_Printers"
End Sub

Da diese Sub Public ist, muss ihr das Kombifeld beim Aufruf übergeben werden.

Kommen wir nun zum eigentlichen Wechsel des Standarddruckers. Sub "ChangePrinter"

Public Sub ChangePrinter(sReportName As String, iPrtIndex As Integer, _
                         Optional lngCopies As Long = 1, Optional lngAusrichtung As Long = 1)
'---------------------------------------------------------------------------------------
' Procedure : ChangePrinter
' DateTime  : 05.08.2005 15:36
' Author    : TommyK
' Purpose   : wechselt den Standarddrucker für den gewählten Bericht
' Inputs    : sReportName = Name des Berichts, iPrtIndex = Index des gewählten Druckers
'             lngCopies = Anzahl der Kopien, lngAusrichtung = 1 = Hochformat, 2 = Querformat
' Output    :
' Example   : ChangePrinter "rpt_MeinBericht", 1
'             Würde den Bericht "rpt_MeinBericht" auf dem 2. Drucker des Systems
'             mit 1 Kopie und im Hochformat ausgeben
'---------------------------------------------------------------------------------------
    Dim prtDefault As Printer
    Dim prtReportPrinter As Printer
    Dim prtPrinter As Printer
    On Error GoTo ChangePrinter_Error
    Set prtDefault = Application.Printer
    Set prtPrinter = Application.Printers(iPrtIndex)
    Application.Printer = prtPrinter
    DoCmd.OpenReport sReportName, acViewDesign, acHidden
    Set prtReportPrinter = Reports(sReportName).Printer
    With Reports(sReportName).Printer
        .Copies = lngCopies
        .Orientation = lngAusrichtung
    End With
    DoCmd.OpenReport sReportName, acViewNormal
    DoCmd.Close acReport, sReportName, acSaveNo
    Set prtReportPrinter = Nothing
    Application.Printer = prtDefault
    On Error GoTo 0
    Exit Sub
ChangePrinter_Error:
    Dim strErrString As String
    strErrString = "Error Information..." & vbCrLf
    strErrString = strErrString & "Error#: " & Err.Number & vbCrLf
    strErrString = strErrString & "Description: " & Err.Description
    MsgBox strErrString, vbCritical + vbOKOnly, "Error in procedure ChangePrinter of Modul mod_Printers"
End Sub

 

Der Sub müssen 2 Parameter übergeben werden und 2 können übergeben werden
Pflicht:
1. Name des Berichtes
2. Index des gewählten Druckers (Der Index wird bei beiden Möglichkeiten automatisch ermittelt und ist in den Kombifelden vorhanden)
Optional:
1. Anzahl der Kopien (Standardwert=1)
2. Hoch- oder Querformat (Im Tabellenbeispiel wird dieser Wert mit ausgelesen und kann über die Optionsgruppe geändert werden,
Sonst Standardwert=Hochformat.

Aufruf der Sub z.B.:

ChangePrinter "rpt_Printers", 2, 3, 2

würden den Bericht "rpt_Printers" auf dem 3. Drucker des System mit 3 Kopien im Querformat ausgeben.

Das Ändern des Druckers ist nur Temporär, da die Änderungen nicht gespeichert werden.

Dateien:
Änderung des Standarddruckers mittels VBA

Änderung des Standarddruckers mittels VBA
für AXP/02-A03 , A07 nicht getestet

Die Zip-Datei enthält eine Version ab AXP/02
Datum 02.01.2008 Dateigröße 38.36 KB Download 1766

Einen Kommentar verfassen

Als Gast kommentieren

0 / 300 Zeichen Beschränkung
Dein Text sollte zwischen 10-300 Zeichen lang sein
Nutzungsbedingungen.

Personen in dieser Konversation

  • Gast - Netpower

    Hallo Tommy,<br /><br />habe eine Frage zum o.a. Download.<br />Besteht die Möglichkeit, diesenm auch mit Formularen zum Laufen zu bringen.<br />Z.B.

         ChangePrinter "frm_Production", Me.cbo_Printer.Column(0), Me.txtSpinCopies
    <br />Wenn ja, welche Änderungen müssten dann vorgenommen werden?