Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Drucken über PDF via VBA

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
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


Sehen Sie sich das Profil von fabian1243 an!   Senden Sie eine Private Message an fabian1243  Schreiben Sie einen Gästebucheintrag für fabian1243

Beiträge: 44
Registriert: 28.06.2018

SW 2021
Win 10 Pro v1909

erstellt am: 18. Sep. 2018 13:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von HenryV an!   Senden Sie eine Private Message an HenryV  Schreiben Sie einen Gästebucheintrag für HenryV

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für fabian1243 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von fabian1243 an!   Senden Sie eine Private Message an fabian1243  Schreiben Sie einen Gästebucheintrag für fabian1243

Beiträge: 44
Registriert: 28.06.2018

SW 2021
Win 10 Pro v1909

erstellt am: 19. Sep. 2018 12:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von HenryV an!   Senden Sie eine Private Message an HenryV  Schreiben Sie einen Gästebucheintrag für HenryV

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für fabian1243 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von fabian1243 an!   Senden Sie eine Private Message an fabian1243  Schreiben Sie einen Gästebucheintrag für fabian1243

Beiträge: 44
Registriert: 28.06.2018

SW 2021
Win 10 Pro v1909

erstellt am: 19. Sep. 2018 16:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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 >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz