| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS | | | | Hannover Messe |
Autor
|
Thema: Drucken über PDF via VBA (2005 mal gelesen)
|
fabian1243 Mitglied Maschinen-Konstrukteur
Beiträge: 44 Registriert: 28.06.2018 SW 2021 Win 10 Pro v1909
|
erstellt am: 18. Sep. 2018 13:09 <-- editieren / zitieren --> Unities abgeben:
Hallo, Bei größeren Dateien lässt der Plotter immer Bereiche beim Drucken aus. Es muss immer manuell ein PDF erstellt werden und dieses dann an den Drucker geschickt werden. Jetzt wollte ich ein Programm mit VBA schreiben das mir ein PDF zwischenspeichert, öffnet, druckt und auch wieder schließt. Also das Speichern mit SaveAs2 hat geklappt. (Wobei das PDF nach dem speichern angezeigt wird sofern die Option "PDF nach speichern anzeigen" aktiv ist. Ich hab keinen Weg gefunden das auszuschalten) Jetzt muss ich das pdf noch öffnen und drucken, habt ihr zufällig Code der mir helfen kann das zu realisieren? Bzw. habt eine andere Lösung? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HenryV Mitglied Konstrukteur, Engineering
Beiträge: 813 Registriert: 18.05.2005 SolidWorks 2022 x64 SP5.0 Dell Precision 5820 Intel Xeon W-2125 4x4GHz NVIDIA Quadro P2000 5GB 32GB RAM 2x Dell U2412M, 24" TFT Windows 10 Enterprise x64 22H2 Microsoft 365 E5 Microsoft Visual Studio Enterprise 2022
|
erstellt am: 19. Sep. 2018 08:56 <-- editieren / zitieren --> Unities abgeben: Nur für fabian1243
Hallo Fabian Ob das PDF nach dem speichern angezeigt werden soll, kann man mit dem ViewPdfAfterSaving Property steuern. Wegen dem Drucken, dies könnte man mit ShellExecute und dem Acrobat Reader lösen. Print a PDF file using VBA
Code: Option Explicit#If VBA7 Then Declare PtrSafe Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" (ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As String) As LongPtr #Else Declare Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" (ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As String) As Long #End If Sub Test_Printpdf() Dim fn$ fn = "C:\temp\Zeichnung1.PDF" PrintPDf fn End Sub Sub PrintPDf(fn$) Dim pdfEXE$, q$ pdfEXE = ExePath(fn) If pdfEXE = "" Then MsgBox "No path found to pdf's associated EXE.", vbCritical, "Macro Ending" Exit Sub End If q = """" 'https://stackoverflow.com/questions/619158/adobe-reader-command-line-reference '/s/o/h/p/t Shell q & pdfEXE & q & " /s /o /h /t " & q & fn & q, vbHide End Sub 'Find Adobe Acrobat Function ExePath(lpFile As String) As String #If VBA7 Then Dim rc As LongPtr #Else Dim rc As Long #End If Dim lpDirectory As String, sExePath As String lpDirectory = "\" sExePath = Space(255) rc = FindExecutable(lpFile, lpDirectory, sExePath) sExePath = Left$(sExePath, InStr(sExePath, Chr$(0)) - 1) ExePath = sExePath End Function Sub Test_ExePath() MsgBox ExePath(ThisWorkbook.FullName) End Sub
Gruss Andreas ------------------ 21 ist nur die halbe Antwort. [Diese Nachricht wurde von HenryV am 19. Sep. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fabian1243 Mitglied Maschinen-Konstrukteur
Beiträge: 44 Registriert: 28.06.2018 SW 2021 Win 10 Pro v1909
|
erstellt am: 19. Sep. 2018 12:47 <-- editieren / zitieren --> Unities abgeben:
Hallo, Das mit dem Öffnen nach dem Speichern habe ich gelöst mit dem Speicherbefehl: boolstatus = swModelDocExt.SaveAs(Zwischenpfad, 0, 0, swExportPDFData, lErrors, lWarnings) Nun zum Drucken. Bei mir wird bei dem Code den du mir hier geschrieben hast der Fehler ausgegeben, Typen stimmen nicht überein bei: rc = FindExecutable(lpFile, lpDirectory, sExePath) Weis jemand wieso? Sind doch anscheinend beide Longs [Diese Nachricht wurde von fabian1243 am 19. Sep. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HenryV Mitglied Konstrukteur, Engineering
Beiträge: 813 Registriert: 18.05.2005 SolidWorks 2022 x64 SP5.0 Dell Precision 5820 Intel Xeon W-2125 4x4GHz NVIDIA Quadro P2000 5GB 32GB RAM 2x Dell U2412M, 24" TFT Windows 10 Enterprise x64 22H2 Microsoft 365 E5 Microsoft Visual Studio Enterprise 2022
|
erstellt am: 19. Sep. 2018 15:45 <-- editieren / zitieren --> Unities abgeben: Nur für fabian1243
Hallo Fabian Da war ein Fehler in der Variabel-Deklaration in der Funktion "ExePath". Ist nun aber korrigiert. Gruss Andreas ------------------ 21 ist nur die halbe Antwort. [Diese Nachricht wurde von HenryV am 19. Sep. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fabian1243 Mitglied Maschinen-Konstrukteur
Beiträge: 44 Registriert: 28.06.2018 SW 2021 Win 10 Pro v1909
|
erstellt am: 19. Sep. 2018 16:09 <-- editieren / zitieren --> Unities abgeben:
Hallo, Ok hat funktioniert. Darauf folgt der Befehl "Acrobat schließen" und dann lösche ich die pdf datei wieder. Das Problem ist jetzt dass der Befehl "Acrobat schließen" zu schnell ausgeführt wird bevor die Datei gedruckt wird. Wie kann ich den Programmablauf erst wieder freigeben sobald die Datei an den Drucker gesendet wurde? PS: kann man auch Einstellungen für den Druck übergeben zb. die Größe oder horizontal/Vertikal? [Diese Nachricht wurde von fabian1243 am 19. Sep. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|