Als VB und VBA-Programmierer haben Sie sich doch sicherlich auch schon manchmal darüber geärgert, dass das Printer-Objekt unter VBA nicht zur Verfügung steht. Dieses Manko lässt sich aber sehr leicht "beheben", indem man das Printer-Objekt einfach über eine ActiveX-DLL zur Verfügung stellt. Innerhalb VBA kann man dann die ActiveX-Klasse verwenden und somit auch das VB-Printer-Objekt Sicherlich denkt jetzt der ein oder andere: "Ach Du meine Güte... alle Eigenschaften, Methoden usw. müssen jetzt in der ActiveX-Klasse nachgebildet werden." Aber weit gefehlt: Es genügt völlig das Printer-Objekt, sowie die Printers-Auflistung als öffentliche Objekte zu deklarieren Hier der Code der ActiveX-Klasse: Option Explicit ' Öffentliche Objekte Public vbPrinter As Printer Public vbPrinters As New Collection Private Sub Class_Initialize() ' Printer-Objekt Set vbPrinter = Printer ' vbPrinters-Collection füllen Dim oPrinter As Printer For Each oPrinter In Printers vbPrinters.Add oPrinter Next End Sub Private Sub Class_Terminate() ' Objekte zerstören Set vbPrinter = Nothing Set vbPrinters = Nothing End Sub Erstellen Sie ein neues Projekt und wählen als Projekttyp ActiveX-DLL. Tragen Sie unter "Projekt-Eigenschaften" als Projektname vbPrinter ein und fügen dann obigen Code in das Klassenmodul Class1 ein. Kompilieren Sie das Projekt nun zu einer ActiveX-DLL.Verwenden der "neuen" Printer-Klasse in VBA (Bsp.: Access 97) Im Allgemein-Teil der Form wird die Klasse wie folgt instanziert: Option Compare Database Option Explicit ' vbPrinter-Klasse instanzieren Private pClass As New vbPrinter.Class1 Ein kleiner Test: Private Sub Form_Load() ' Name des Standard-Druckers MsgBox pClass.vbPrinter.DeviceName ' Alle verfügbaren Drucker anzeigen Dim i As Integer Dim sMsg As String For i = 0 To pClass.vbPrinters.Count - 1 sMsg = sMsg + pClass.vbPrinters(i + 1).DeviceName + vbCrLf Next i MsgBox sMsg End Sub Wenn Sie nun unsere kleine Access-Anwendung starten, sollte eine MsgBox mit dem Namen des Standard-Druckers erscheinen. Danch wird eine weitere MsgBox mit allen verfügbaren Druckern angezeigt. Ein kleiner Test-Ausdruck Private Sub Button_Click() With pClass.vbPrinter ' Test-Ausdruck .ScaleMode = 6 ' Maßeinheit "mm" .CurrentX = 20: .CurrentY = 20 .Font.Name = "Arial" .Font.Size = 14 .Font.Bold = True pClass.vbPrinter.Print "Drucken in VBA" & vbCrLf & _ "...mit dem bekannten VB Printer-Objekt" .CurrentX = 20: .CurrentY = 50 .Font.Bold = False .Font.Size = 12 pClass.vbPrinter.Print "Beliebiger Text, der autom. am " & _ "rechten Rand umgebrochen wird..." ' Bild drucken .PaintPicture LoadPicture("IrgendeinBild.gif"), 20, 100 ' Wichtig: Wenn Druckauftrag beendet, dann... .EndDoc End With End Sub Das Beispielprojekt und auch die ActiveX-DLL finden Sie auf unserer vb@rchiv CD Dieser Tipp wurde bereits 45.322 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
Neu! sevCommand 4.0 Professionelle Schaltflächen im modernen Design! Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. Tipp des Monats Oktober 2024 Heinz Prelle Firewall-Status unter WinXP/Vista prüfen Das Beispiel prüft, ob die Firewall unter Windows XP/Vista eingeschaltet ist oder nicht. Zudem wird eine Abfrage durchgeführt ob es sich bei dem zugrundeliegenden Betriebssystem um Windows XP/Vista handelt oder nicht. Access-Tools Vol.1 Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |