PDA

Vollständige Version anzeigen : pdf drucker einrichten per VBA


cms_bulme
24.03.2006, 18:31
Private Sub Report_Open(Cancel As Integer)
Dim newprinter As Printer
Dim prtLoop As Printer
Dim cnt As Integer

cnt = 0

For Each prtLoop In Application.Printers
With prtLoop
If .DeviceName = "FreePDF XP" Then
Set newprinter = Application.Printers(cnt)
End If
End With
cnt = cnt + 1
Next prtLoop

MsgBox newprinter.DeviceName

DoCmd.PrintOut

End Sub


was muss ich nun noch machen, dass er nicht mit dem von windows ausgewählten standartdrucker druckt, sonder mit meinem newprinter???

Großer Meister
24.03.2006, 18:56
so:

If .DeviceName Like "FreePDF XP*" Then
ActivePrinter=.DeviceName
End If

cms_bulme
26.03.2006, 18:30
der debugger sagt dass activeprinter nicht definiert ist...

also wie kann ich den anlegen?

Großer Meister
26.03.2006, 18:39
Ok, was passiert, wenn du
debug.print ActivePrinter
ausführst. Kommt dann der gleiche Fehler?
Welche Access-Version hast du?
welche Verweise hast du gesetzt?

Nouba
26.03.2006, 19:03
Ich würde das nicht in OpenReport verwenden, dann ist der Bericht ja nicht vielseitig brauchbar.
Dim InstalledPrinter As Printer
Dim NewPrinter As Printer
Dim OldPrinter As Printer

For Each InstalledPrinter In Application.Printers
With InstalledPrinter
If .DeviceName = "FreePDF XP" Then
Set NewPrinter = InstalledPrinter
Exit For
End If
End With
Next InstalledPrinter

If Not NewPrinter Is Nothing And _
MsgBox("Soll der Ausdruck auf " & NewPrinter.DeviceName & " erfolgen?", vbYesNo) = vbYes Then
Set OldPrinter = Application.Printer
Set Application.Printer = NewPrinter
DoCmd.PrintOut
Set Application.Printer = OldPrinter
End If

cms_bulme
26.03.2006, 22:18
wo würdest du es denn hineinschreiben?

vielen dank für den code... dürfte funktionieren... (jedoch nicht bei openform...

Großer Meister
27.03.2006, 08:00
vielen dank für den code... dürfte funktionieren...
davon kannst du bei Nouba ausgehen,
du kannst den Code ja mit der autoexec beim DB-Start ausführen lassen.

cms_bulme
27.03.2006, 20:15
der bericht wird ja imma erst erstellt... ich arbeite zum ersten mal mit berichten und verstehe nicht wo ich das reinschreiben soll???

Großer Meister
28.03.2006, 07:39
du kannst es in eine Funktion in ein Modul reinschreiben.
Diese Funktion rufst du in einem Makro namens autoexec auf.
das
DoCmd.PrintOut
hat dort natürlich nichts zu suchen.