Guten Morgen zusammen,
ich benötige mal wieder Hilfe von euch Profis ;)
Ich habe in einem Formular einen Button, über den ich eine PDF Datei, die auf der Festplatte gespeichert ist, ausdrucken möchte. Wie das eigentlich funktionieren muss, habe ich gefunden: über ShellExecute. Ich habe also ein Modul erstellt, dass ich dann in der Prozedur des Buttons ausführe. Das klappt soweit auch.
Mein Problem ist jetzt aber, dass nur ein Ausschnitt der PDF Datei ausgedruckt wird. Ich habe schon im Internet gesucht, woran das liegen könnte. Habe aber leider nichts gefunden was mir weiter hilft. An den Einstellungen von Adobe Reader kann es eigentlich nicht liegen, da das Dokument richtig gedruckt wird, wenn ich es im Reader öffne und dann ausdrucke.
Mein Code sieht aus wie folgt:
Modul:
Option Compare Database
Option Explicit
Public Declare Function ShellExecute Lib "shell32.dll" Alias _
"ShellExecuteA" (ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nshowcmd As Long) As Long
Public hwnd As Long
Public Const SW_HIDE = 0 ' Versteckt öffnen
Public Const SW_MAXIMIZE = 3 ' Maximiert öffnen
Public Const SW_MINIMIZE = 6 ' Minimiert öffnen
Public Const SW_NORMAL = 1
Public Const SW_RESTORE = 9
Public Const SW_SHOWMAXIMIZED = 3
Public Const SW_SHOWMINIMIZED = 2
Public Const SW_SHOWMINNOACTIVE = 7
Public Const SW_SHOWNOACTIVATE = 4
Public Function DateiOeffnen(Aktion As String, Pfad As String, _
Ansicht As Long) As Boolean
Call ShellExecute(hwnd, Aktion, Pfad, "", "", Ansicht)
End Function
Prozedur:
Private Sub btnZeichnungDrucken_Click()
Dim Pfad As String
Pfad = "G:\Zeichnungen\" & Me!artZeichnungsNr & ".pdf"
DateiOeffnen "print", Pfad, SW_MAXIMIZE
End Sub
Hat jemand eine Idee, was ich da machen kann? Habe auch schon nach anderen Wegen gesucht...in einem Bericht kann man PDF ja leider nicht einbinden und wenn ich es im Formular einbinde und dann das Formular ausdrucke, wird nur eine leere Seite ausgedruckt. Damit komme ich also auch nicht weiter. Die letze Möglichkeit wäre noch, die PDFs in Bilder umzuwandeln und die dann als Bericht auszudrucken...aber das wäre bei tausenden von Zeichnungen ein riesen Aufwand, den ich eigentlich gerne vermeiden möchte.
Für Ideen, Tipps und Anregungen bin ich Euch sehr dankbar!
Beste Grüße
Markus
Hallo,
und WELCHER Ausschnitt wird gedruckt?
Wobei das insgesamt mysteriös ist, aber vielleicht an der nicht definierten Variable "hwnd" liegen mag.
Setze mal eine 0 anstelle hwnd beim Aufruf ein:
Call ShellExecute(0, Aktion, Pfad, "", "", Ansicht)
Hey,
also am der Variable "hwnd" hat es nicht gelegen...aaaaber Deine Frage welcher Ausschnitt gedruckt wird, hat mich weiter gebracht:
Es wird nämlich ein Ausschnitt aus der Mitte gedruckt. Das hat mich auf die Idee gebracht, mal nachzuschauen, wie groß das Dokument ist. Und siehe da, es hat das Format A3. Natürlich druckt er auf A4 dann nur einen Ausschnitt aus. Kann man da irgendwie einen Befehl übergeben? Z.B. dass der das kleiner Zoomt oder so?
Nochmal vielen Dank!
Gruß, Markus
Hallo,
das dürfte eine Sache/Einstellung des Standarddrucker-Treibers sein...
Perfekt! Das wars...
Habe bei den Standard Einstellungen des Druckers eingestellt, dass er von A3 auf A4 skaliert. Jetzt klappt's...
Kann ich Access jetzt noch mitteilen, mit welchem Drucker er das drucken soll? Würde mir dann gerne den Drucker ein zweites Mal installieren, dort die nötigen Einstellungen vornehmen und meinen Standard Drucker so lassen wir er ist.
Vielen Dank!
Hallo,
http://www.donkarl.com/?FAQ5.1
Aber damit ändere ich doch nur den Drucker, der von Access verwendet wird. Ich muss ja den Drucker ändern, der bei Windows als Standard Drucker hinterlegt ist...
Hallo,
im genannten Link findet sich ein weiterführender Hinweis auf diese Beispiel-DB, mir der via API-Calls der Standard-Drucker umgestellt werden kann:
http://www.freeaccess.de/downloaddetails.asp?ID=13
Moin!
So, hat ein bisschen gedauert, bis ich da durchgeblickt habe. Konnte das ganze jetzt aber soweit anpassen, dass das gemacht wird, was gemacht werden soll :)
Drucker ändern -> PDF drucken -> Drucker wieder zurückändern
Tausend Dank mal wieder :)
Beste Grüße, Markus