Makro: Nur die erste Seite meiner Zeichnung als PDF speichern

Hallo ihr alle

Ich habe ein Makro erstellt, mit dem ich eine PDF-Datei meiner Zeichnungen mit einem Präfix und eine zweite PDF-Datei mit einem Präfix gefolgt von "ADV" erstellen kann.

Mein Problem ist folgendes: Beim zweiten PDF möchte ich, dass es nur die erste Seite meines Layouts ist, denn beim Speichern kann man die gewünschten Seiten erkennen oder nicht, aber in VBA weiß ich nicht, wie man das macht.

Derzeit verwende ich Acrobat, das ich über mein Makro öffne, um die letzten beiden zu löschen

Unten ist mein Makro:

*****************************************************************************

Sub main()

SwApp als Objekt dimmen
    Teil als Objekt dimmen
    Dim SelMgr als Objekt
    Dim selObj Als Objekt
    AcroApp als Acrobat dimmen.AcroApp
    Set SwApp = CreateObject("SldWorks.Application")

Set Part = SwApp.ActiveDoc
Schwacher Hinweis als Schnur
index = InputBox("Index?")
myModelView als Objekt dimmen
Festlegen von myModelView = Part.ActiveView
Dim-Ziel als Scripting.filesystemobject
Dimm-Wert Als Scripting.file
Zielsatz = CreateObject("Skripting.filesystemobject")
Wert festlegen = target.getfile(Part.GetPathName)
longstatus = Part.SaveAs3("U:\PDF zu bedienen\" & Ziel. GetBaseName(value) & "-" & index & ".pdf", 0, 0)
If MsgBox("ADV", vbYesNo, "Benötige ich eine PDF-Datei für ADV?") = vbYes Dann
longstatus = Part.SaveAs3("U:\PDF zu bedienen\" & Ziel. GetBaseName(value) & "-" & index & "-ADV" & ".pdf", 0, 0)
Shell ("C:\Programme (x86)\Adobe\Acrobat 7.0\Acrobat\Acrobat.exe U:\Zu verteilende PDF\" & Ziel. GetBaseName(value) & "-" & index & "-ADV" & ".pdf"), vbMaximizedFocus

Ende, wenn

  MsgBox ("Fertigstellen")

Ende Sub

*****************************************************************************

Vielen Dank im Voraus für Ihre Antworten

Julianisch.

 

 

Hallo

 

Persönlich kann ich Ihnen nicht helfen, aber Menschen wie .PL oder Joss.G und es muss noch andere geben, werden Ihnen sicherlich helfen können.

 

Mathieu

1 „Gefällt mir“

Hallo

Können Sie beim Erlernen der Aufnahmefunktion nur mit der 1. Seite ein Makro erstellen, um zu sehen, wie sie es in VBA übersetzen?

 

S.B

Ich habe bereits versucht, den Makrorecorder zu verwenden, um mir die Codezeile zu geben, aber es funktioniert nicht

Julianisch.

 

Hallo

In diesem Fall glaube ich nicht, dass Sie die Shell verwenden können, Sie müssen die SolidWorks-Funktion verwenden um die PDFs zu erstellen, siehe  :

http://help.solidworks.com/2014/English/api/sldworksapi/Save_File_as_PDF_Example_VB.htm

 

Beispiel:

Set swExportPDFData = swApp.GetExportFileData(swExportDataFileType_e.swExportPDFData)

Wählen Sie hier Ihr Blatt aus

varSheetName = strSheetName

boolstatus = swExportPDFData.SetSheets(swExportData_ExportSpecifiedSheets, varSheetName)

   

boolstatus = swModelDocExt.SaveAs(Dateiname, 0, 0, swExportPDFData, lErrors, lWarnings)

 

 

Quelle: https://forum.solidworks.com/thread/66559

1 „Gefällt mir“

Es ist schön, Mathieu ANGER zu zitieren, aber ich kenne mich mit Makros nicht gut aus, ich gebe zu, dass ich von Zeit zu Zeit ein wenig Zeit damit verbracht habe, aber von da an beim Schreiben von Codezeilen zu helfen... ^^

Ich habe vorgefertigte Makros für diejenigen gefunden, die danach suchen, aber ich bin nicht so gut wie .PL. (Ich glaube, Jmsavoyat kennt sich auch ziemlich gut mit dem Thema aus).

Cdt

Joss

1 „Gefällt mir“

Vielen Dank für Ihre Lösung .PL ^^ es funktioniert super;) Ich musste es ein wenig anpassen, aber ich bin mit dem Ergebnis zufrieden.

Nochmals vielen Dank und einen schönen Tag,

 

Julianisch.

1 „Gefällt mir“

Bitte^^

Wenn Sie den Code so posten können, dass wir die genaue Syntax haben (insbesondere, um nur das erste Blatt auszuwählen), kann dies für andere nützlich sein!

Einen schönen Tag noch.

Hier ist das vollständige Makro, das es Ihnen ermöglicht, erstens eine PDF-Datei mit allen Seiten und einem "tiefgestellten" Präfix im Namen zu haben und zweitens nur die erste Seite mit dem Präfix "indice" und anderen vordefinierten "ADV" zu haben

Es liegt an Ihnen, es nach Belieben zu ändern

Einen schönen Tag euch allen 

Julianisch.

 

************************************************************************************************************************

Sub main()

SwApp als Objekt dimmen
    Teil als Objekt dimmen
    Dim SelMgr als Objekt
    Dim selObj Als Objekt
    Dim swExportPDFData As SldWorks.ExportPdfData
    Dim boolstatus als boolescher Wert
    Fehler so lange dimmen
    Dim lWarnungen so lange
    Dim strSheetName(3) als Zeichenfolge
    Dim varSheetName als Variante
    Dim-Dateiname als Zeichenfolge
    Dim swModelDocExt As SldWorks.ModelDocExtension

           
    Set SwApp = CreateObject("SldWorks.Application")

Set Part = SwApp.ActiveDoc
Wenn Teil nichts ist, dann
        MsgBox "Kein aktuelles Dokument", vbCritical
        Ende
Ende, wenn
Schwacher Hinweis als Schnur
index = InputBox("Index?")
myModelView als Objekt dimmen
Festlegen von myModelView = Part.ActiveView
Dim-Ziel als Scripting.filesystemobject
Dimm-Wert Als Scripting.file
Zielsatz = CreateObject("Skripting.filesystemobject")
Wert festlegen = target.getfile(Part.GetPathName)
longstatus = Part.SaveAs3("C:\Pfad zum PDF-Ziel" & Ziel. GetBaseName(value) & "-" & index & ".pdf", 0, 0)
If MsgBox("ADV", vbYesNo, "Benötige ich eine PDF-Datei für ADV?") = vbYes Dann

filename = "C:\Pfad zum PDF-Ziel" & Ziel. GetBaseName(value) & "-" & index & "-ADV" & ".pdf"

Festlegen von swModelDocExt = Part.Extension
Set swExportPDFData = SwApp.GetExportFileData(1)

strSheetName(0) = "Stückliste"

varSheetName = strSheetName


boolstatus = swExportPDFData.SetSheets(swExportData_ExportSpecifiedSheets, varSheetName)
    
boolstatus = swModelDocExt.SaveAs(Dateiname, 0, 0, swExportPDFData, lErrors, lWarnings)

   
Ende, wenn
   MsgBox ("Fertigstellen")
Ende Sub

*************************************************************************************************************************