| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| Bechtle Competence Days | Online |
Autor
|
Thema: PDF Dateien einzeln erzeugen (4664 mal gelesen)
|
techdot Mitglied Werkzeugmachermeister
Beiträge: 51 Registriert: 12.07.2011 SW 2013 SP2 NVIDIA Quadro FX 3500 Win7 64bit
|
erstellt am: 27. Feb. 2012 18:13 <-- editieren / zitieren --> Unities abgeben:
Hallo, gibt es ein Makro mit diesem man Zeichnungen einzeln (wie bei einer DXF) auslesen kann? Eine weitere Frage: ein Makro oder Tool um einzelne Bauteile als STEP umzuwandeln ohne Öffnen und Speichern unter zu müssen. Gruß techdot Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
THSEFA Mitglied Konstrukteur/CAD-Admin
Beiträge: 1141 Registriert: 27.11.2002 SWX 2020 SP5.0 Premium Windows 10 Pro 64Bit Citrix VM Intel(R) XEON(R) Gold 6146 CPU @ 3.20GHz 24 GB Ram<P>Windows 10 Pro 64Bit
|
erstellt am: 28. Feb. 2012 08:15 <-- editieren / zitieren --> Unities abgeben: Nur für techdot
|
ad_man Mitglied freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))
Beiträge: 1366 Registriert: 20.12.2003
|
erstellt am: 28. Feb. 2012 08:17 <-- editieren / zitieren --> Unities abgeben: Nur für techdot
Hallo techdot, wenn du eine Zeichnung mit mehreren Blättern hast, dann kannst du SWX mitteilen, welche Blätter gedruckt werden sollen. Sprich, die Funktion ist also enthalten. In deinem Makro musst du dann die entsprechenden Blätter, die du drucken möchtest, angeben. Dazu gibt es die Methode SetSheets des IExportPdfData-Objekts, die du mit einem Array der zu druckenden Blätter "füttern" möchtest. Am einfachsten schaust du dir das "Save File as PDF"-Beispiel in der API-Hilfe an. ------------------ ========== Gruß Andreas ========== Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)
Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 28. Feb. 2012 10:59 <-- editieren / zitieren --> Unities abgeben: Nur für techdot
Hallo techdot, Zitat: Original erstellt von techdot: Eine weitere Frage: ein Makro oder Tool um einzelne Bauteile als STEP umzuwandeln ohne Öffnen und Speichern unter zu müssen.
Das kann ich mir nur schwer vorstellen, wie das funktionieren soll, irgendwie müssen die Daten ja ausgelesen werden, dazu muss das Dokument geöffnet werden, und irgendwie willst du ja hinterher eine STEP Datei haben, also müssen die Daten irgendwie gespeichert werden ... Ciao, Stefan
------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ad_man Mitglied freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))
Beiträge: 1366 Registriert: 20.12.2003
|
erstellt am: 28. Feb. 2012 13:25 <-- editieren / zitieren --> Unities abgeben: Nur für techdot
Hallo techdot, Zitat: Original erstellt von techdot: Eine weitere Frage: ein Makro oder Tool um einzelne Bauteile als STEP umzuwandeln ohne Öffnen und Speichern unter zu müssen.
wie Stefan schon sagte, ist es ohne SWX wohl kaum möglich. Denkbar wären zwei Wege: 1. Du öffnest das Teil/ die BG und klickst dann auf einen Button, hinter dem sich ein kleines Makro zum Speichern unter STEP verbirgt. 2. Du hast ein externes Progrämmchen (z.B. unter VB.net o.a.), das dir einen Dateidialog zum Auswählen deiner SWX-Dateien anbietet. Das Programm öffnet dann Solidworks sowie die einzelnen Dateien, speichert diese dann als STEP-Dateien und schließt Solidworks wieder. Ist aber sicherlich nicht in einer Viertelstunde zu erledigen Für Punkt 1. wäre z.B. das von THSEFA genannte Makro geeignet.
------------------ ========== Gruß Andreas ========== Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
techdot Mitglied Werkzeugmachermeister
Beiträge: 51 Registriert: 12.07.2011 SW 2013 SP2 NVIDIA Quadro FX 3500 Win7 64bit
|
erstellt am: 28. Feb. 2012 17:43 <-- editieren / zitieren --> Unities abgeben:
Hallo, danke erst einmal für die Antworten. Das Makro Nr.20 ist nicht schlecht funktioniert aber nicht so wie ich das wollte.Bei SW ohne Makro kann ich eine Zeichnung mit mehreren Blättern die DXF Dateien als einzelne Blätter auslesen d.h. jedes Blatt eine DXF Datei. Dieses wollte ich auch für PDF Dateien. Beim "Speichern unter" für DXF Dateien gibt es die Einstellung " Alle Blätter in sperate Dateien exportieren" dies müsste es auch für PDF Dateien geben. Problematik STEP: Ich hatte mir gedacht das es ein Makro/Tool gibt wo man das Teil im Feature Baum aktiviert aus welchem man eine STEP erzeugen will und mit rechter Maus oder ausführen Makro eine STEP erzeugt wird. Danke für die Antworten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ThoMay Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 5258 Registriert: 15.04.2007 SWX 2019 Windows 10 x64
|
erstellt am: 28. Feb. 2012 20:00 <-- editieren / zitieren --> Unities abgeben: Nur für techdot
|
ad_man Mitglied freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))
Beiträge: 1366 Registriert: 20.12.2003
|
erstellt am: 28. Feb. 2012 20:04 <-- editieren / zitieren --> Unities abgeben: Nur für techdot
Hallo techdot, ich habe mal mein DXF-/PDF-Speichern-Makro ein wenig an deine Forderungen angepasst. Die PDF werden jetzt im Unterverzeichnis PDF der Zeichnung gespeichert. Habe es mit drei Blättern getestet und es funktionierte Vielleicht ist es ja das, was du gesucht hast.
------------------ ========== Gruß Andreas ========== Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
techdot Mitglied Werkzeugmachermeister
Beiträge: 51 Registriert: 12.07.2011 SW 2013 SP2 NVIDIA Quadro FX 3500 Win7 64bit
|
erstellt am: 28. Feb. 2012 20:53 <-- editieren / zitieren --> Unities abgeben:
Hallo ad_man, das sieht gut aus. Er legt ein Unterverzeichniss DXF und PDF an. In dem Verzeichniss DXF schreibt er die DXF Dateien so rein wie es sein soll aber das PDF Verzeichniss ist leer. Beim Umwandeln schmeist er den drucker an und druckt einen Ausschnitt der Zeichnung. Kann ich dich bitten nachzubessern? Ich danke vielmals :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ad_man Mitglied freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))
Beiträge: 1366 Registriert: 20.12.2003
|
erstellt am: 29. Feb. 2012 08:21 <-- editieren / zitieren --> Unities abgeben: Nur für techdot
Guten Morgen, man sollte hin und wieder auch die Speichern-Taste drücken... Jetzt aber das Makro in richtig! Das andere Makro funktioniert nur in Verbindung mit dem Adobe Acrobat - Drucker, weil es in SWX 2011 einen Fehler bei der Ausgabe als PDF gab. ------------------ ========== Gruß Andreas ========== Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
techdot Mitglied Werkzeugmachermeister
Beiträge: 51 Registriert: 12.07.2011 SW 2013 SP2 NVIDIA Quadro FX 3500 Win7 64bit
|
erstellt am: 29. Feb. 2012 22:01 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich danke Dir ad_man vielmals. Es geht genau so wie ich es mir vorgestellt habe. Ich bin sehr erfreut. THSEFA ich danke dir auch für deinen Tipp. Ich kann hier super einfach von bestimmten Dateien STEP Daten schreiben. Ihr habt mir mit euren Hilfen und Tipps sehr viel Zeit erspart, ich bin euch überaus Dankbar. Vielen Vielen Dank. Gruß techdot Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mr.Robi Mitglied Tischler
Beiträge: 9 Registriert: 12.10.2021
|
erstellt am: 12. Okt. 2021 12:49 <-- editieren / zitieren --> Unities abgeben: Nur für techdot
Hallo, auch wenn der Beitrag schon ein paar Jahre alt ist hoffe ich trotzdem auf Hilfe. und zwar geht es um das Makro was hier gepostet wurde. Ist es möglich dieses so zu ändern das nicht nur ein Ordner PDF erstellt wird. Sondern auch ein passender Unterordner der wie die Baugruppe heißt? LG Robby Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
dopplerm Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 3592 Registriert: 11.02.2005 Win 10 SWX 2019 SP 5.0
|
erstellt am: 12. Okt. 2021 14:32 <-- editieren / zitieren --> Unities abgeben: Nur für techdot
|
ad_man Mitglied freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))
Beiträge: 1366 Registriert: 20.12.2003
|
erstellt am: 12. Okt. 2021 14:51 <-- editieren / zitieren --> Unities abgeben: Nur für techdot
Hallo Robby, wie genau sieht das aus? Der PDF-Ordner wird in das Verzeichnis gelegt, wo sich deine Zeichnung befindet. Der Pfad wird in diesen Code-Zeilen festgelegt. Diesen kannst du beliebig zusammensetzen. Code: ' Zerlegen in Pfad und Dateiname ohne Extension (7 Zeichen) For i = Len(strDateinameLang) To 1 Step -1 If Mid(strDateinameLang, i, 1) = "\" Then strPfad = Left(strDateinameLang, i) strDateiname = Mid(strDateinameLang, i + 1, Len(strDateinameLang) - i - 7) Exit For End If Next i ' PDF-Dateien sollen im Unterverzeichnis PDF abgespeichert werden; strPDFPfad = strPfad + "PDF\"
Wenn du deine PDF unter C:\<Name der Baugruppe>\PDF abgespeichert haben möchtest, dann lautet der entsprechende Code Code: strPDFPfad = "C:\" + strDateiname + "\PDF\"
Du kannst also deinen Pfad entsprechend "zusammenbauen". ------------------ ========== Gruß Andreas ========== Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mr.Robi Mitglied Tischler
Beiträge: 9 Registriert: 12.10.2021
|
erstellt am: 13. Okt. 2021 08:22 <-- editieren / zitieren --> Unities abgeben: Nur für techdot
Hallo danke erstmal für die Antwort. Hab mal paar Bilder angehangen wie unsere Ordner Struktur derzeit aussieht. Dort sieht man auch den Ordner PDF durch das neue Makro. nur soll in dem Ordner dann wieder ein Ordner erstellt werden der genau wie die Zeichnung heißt. Hab grad etwas rum probiert. Aber hab es nicht hinbekommen :-D lg Robby Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ad_man Mitglied freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))
Beiträge: 1366 Registriert: 20.12.2003 SolidWorks 2023 SP5 mit Enterprise PDM , Windows 11, Dell Precision 3660, i7-12700K, 96 GB DDR-Ram, Quadro RTX A4000
|
erstellt am: 13. Okt. 2021 08:46 <-- editieren / zitieren --> Unities abgeben: Nur für techdot
|
Mr.Robi Mitglied Tischler
Beiträge: 9 Registriert: 12.10.2021
|
erstellt am: 13. Okt. 2021 09:22 <-- editieren / zitieren --> Unities abgeben: Nur für techdot
|
Mr.Robi Mitglied Tischler
Beiträge: 9 Registriert: 12.10.2021
|
erstellt am: 13. Okt. 2021 09:34 <-- editieren / zitieren --> Unities abgeben: Nur für techdot
|
deckelmaho Mitglied Konstrukteur
Beiträge: 239 Registriert: 03.03.2020 SolidWorks 2023 SP5 Windows 10 64bit Office 2019
|
erstellt am: 13. Okt. 2021 09:49 <-- editieren / zitieren --> Unities abgeben: Nur für techdot
|
Mr.Robi Mitglied Tischler
Beiträge: 9 Registriert: 12.10.2021
|
erstellt am: 13. Okt. 2021 10:03 <-- editieren / zitieren --> Unities abgeben: Nur für techdot
Hallo deckelmaho Das hab ich auch schon gefunden. Das ist aber leider nicht genau das was ich möchte. Es soll ein Unterordner erstellt werden der wie die Zeichnung heiß. Trotzdem Danke lg robby Edit: es wäre super wenn ich den Ordner nicht erst erstellen müsste [Diese Nachricht wurde von Mr.Robi am 13. Okt. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ad_man Mitglied freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))
Beiträge: 1366 Registriert: 20.12.2003 SolidWorks 2023 SP5 mit Enterprise PDM , Windows 11, Dell Precision 3660, i7-12700K, 96 GB DDR-Ram, Quadro RTX A4000
|
erstellt am: 13. Okt. 2021 10:39 <-- editieren / zitieren --> Unities abgeben: Nur für techdot
Dann schaue dir doch mal bitte mit dem Debugger den Inhalt der Variablen strPDFPfad und strPDF-Dateiname an. Oder du stellst deinen aktuellen Code mal komplett hier ein, dann kann ich da drüber schauen. ------------------ ========== Gruß Andreas ========== Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mr.Robi Mitglied Tischler
Beiträge: 9 Registriert: 12.10.2021
|
erstellt am: 14. Okt. 2021 07:29 <-- editieren / zitieren --> Unities abgeben: Nur für techdot
Hallo Ist im Grunde noch der Original Code. Die Befehlszeilen die ich Probiert habe hab ich ausgeklammert
Code: ' ********************************************************************** ' * Makro erzeugt aus dem aktiven Zeichnungsdokument für alle Blätter ' * eine PDF Datei im Unterverzeichnis PDF der Zeichnung. Es werden alle ' * Blätterunter dem Namen kombiniert mit dem Blattnamen abgespeichert. ' * ' * Basiert auf einer Vorlage von: ' * ' * 05.04.2001 Stefan Berlitz (stefan.berlitz@solidworks.cad.de) ' * http://solidworks.cad.de ' * http://swtools.cad.de ' ********************************************************************** Option ExplicitDim swApp As SldWorks.SldWorks Dim swDrawingDoc As SldWorks.ModelDoc2 Dim swSheet As SldWorks.Sheet Dim swModelDocExt As SldWorks.ModelDocExtension Dim swExportPDFData As SldWorks.ExportPdfData Dim swPs As SldWorks.PageSetup Dim bReturn As Boolean Dim bCollate As Boolean Dim vSheets As Variant Dim vSheetProps As Variant Dim vPageArray As Variant Dim strDateiname As String Dim strPDFDateiname As String Dim strDateinameLang As String Dim strPfad As String Dim strPDFPfad As String Dim strMsgtxt As String Dim strSheetName As String Dim strPrinter As String Dim i As Long Dim lAnzahlBl As Long Dim lErrors As Long Dim lWarnings As Long Dim lFarbe As Long Dim lPageArray As Long Dim lCopies As Long Dim intReturn As Integer
Sub main() 'Anbindung an SWX Set swApp = Application.SldWorks Set swDrawingDoc = swApp.ActiveDoc strMsgtxt = "" ' wenn keine Zeichnung aktiv wird das Makro wieder beendet If (swDrawingDoc.GetType <> swDocDRAWING) Then MsgBox "Nur für Zeichnungen geeignet" Exit Sub End If ' Prüfung, ob Zeichnung gespeichert werden muss. Falls Zeichnung nicht ' gespeichert wird, Abbruch! If swDrawingDoc.GetSaveFlag Then intReturn = swApp.SendMsgToUser2("Soll die Zeichnung gesichert werden?", swMbQuestion, swMbYesNo) If intReturn = swMbHitYes Then bReturn = swDrawingDoc.Save3(swSaveAsOptions_Silent, lErrors, lWarnings) Else intReturn = swApp.SendMsgToUser2("Bitte die Zeichnung speichern!", swMbInformation, swMbOk) Exit Sub End If End If ' die Anzahl der Blätter holen, und dann in der Schleife eines nach ' dem anderen Abspeichern. Dazu ein Handle auf das aktuelle Blatt holen lAnzahlBl = swDrawingDoc.GetSheetCount Set swSheet = swDrawingDoc.GetCurrentSheet ' damit die DXF anschließend im Unterverzeichnis PDF der Zeichnung gespeichert ' werden, muss der Pfad ermittelt werden. strDateinameLang = swDrawingDoc.GetPathName ' Zerlegen in Pfad und Dateiname ohne Extension (7 Zeichen) For i = Len(strDateinameLang) To 1 Step -1 If Mid(strDateinameLang, i, 1) = "\" Then strPfad = Left(strDateinameLang, i) strDateiname = Mid(strDateinameLang, i + 1, Len(strDateinameLang) - i - 7) Exit For End If Next i ' PDF-Dateien sollen im Unterverzeichnis DXF abgespeichert werden; 'strPDFPfad = strPfad + "PDF\" + strDateiname + "\" 'strPDFPfad = strPfad + "PDF\" + strDateiname strPDFPfad = strPfad + "PDF\" ' Prüfung, ob die Verzeichnisse überhaupt existiert, da sie sonst angelegt ' werden müssen If Len(Dir(strPDFPfad, vbDirectory)) = 0 Then MkDir (strPDFPfad) End If ' wenn mehr als ein Blatt da ist könnte es sein, dass wir nicht auf ' Blatt 1 sind. In einem Makro müssen wir jetzt einen Trick machen, um ' auf das erste Blatt zurückzukommen. ' Dazu immer wieder ein Blatt zurückspringen und dabei den Blattnamen ' vergleichen; wenn der gleich bleibt haben wir das erste Blatt erreicht. strSheetName = swSheet.GetName For i = 1 To lAnzahlBl - 1 swDrawingDoc.SheetPrevious Set swSheet = swDrawingDoc.GetCurrentSheet If (strSheetName = swSheet.GetName) Then Exit For End If Next i ' jetzt sind wir garantiert auf dem ersten Blatt und können jetzt eins ' nach dem anderen Abspeichern For i = 1 To lAnzahlBl ' wir wollen alle Blätter als PDF mit den eingestellten Optionen abspeichern Set swSheet = swDrawingDoc.GetCurrentSheet strSheetName = swSheet.GetName strPDFDateiname = strPDFPfad & strDateiname & " - " & strSheetName & ".pdf" ' dann erfolgt das Speichern als PDF mittels swModelDocExt.SaveAs ' wenn alles geklappt hat, wird TRUE zurückgeliefert, ansonsten FALSE Set swModelDocExt = swDrawingDoc.Extension Set swExportPDFData = swApp.GetExportFileData(1) bReturn = swExportPDFData.SetSheets(swExportData_ExportCurrentSheet, Nothing) bReturn = swModelDocExt.SaveAs(strPDFDateiname, swSaveAsCurrentVersion, swSaveAsOptions_Copy, _ swExportPDFData, lErrors, lWarnings) If bReturn Then strMsgtxt = strMsgtxt & "erfolgreich gespeichert: " & strDateiname & " - " & swSheet.GetName & _ ".pdf" & Chr$(10) & Chr$(13) Else intReturn = swApp.SendMsgToUser2("FEHLER BEIM SPEICHERN VON " & strDateiname & " - " & swSheet.GetName & _ ".pdf" & Chr$(10) & Chr$(13), swMbInformation, swMbOk) strMsgtxt = strMsgtxt & "*** FEHLER bei: " & strDateiname & " - " & swSheet.GetName & _ ".pdf" & Chr$(10) & Chr$(13) End If ' und wenn noch Blätter kommen dieses aktivieren If lAnzahlBl > i Then swDrawingDoc.SheetNext End If Next i ' und noch die Zusammenfassung übers Speichern ausgeben intReturn = swApp.SendMsgToUser2(strMsgtxt, swMbInformation, swMbOk) End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
riesi Mitglied CAD-Admin
Beiträge: 1073 Registriert: 06.05.2002 SWX Premium 2020-Sp5
|
erstellt am: 14. Okt. 2021 08:07 <-- editieren / zitieren --> Unities abgeben: Nur für techdot
Code:
Sub main() 'Anbindung an SWX Set swApp = Application.SldWorks Set swDrawingDoc = swApp.ActiveDoc strMsgtxt = "" ' wenn keine Zeichnung aktiv wird das Makro wieder beendet If (swDrawingDoc.GetType <> swDocDRAWING) Then MsgBox "Nur für Zeichnungen geeignet" Exit Sub End If ' Prüfung, ob Zeichnung gespeichert werden muss. Falls Zeichnung nicht ' gespeichert wird, Abbruch! If swDrawingDoc.GetSaveFlag Then intReturn = swApp.SendMsgToUser2("Soll die Zeichnung gesichert werden?", swMbQuestion, swMbYesNo) If intReturn = swMbHitYes Then bReturn = swDrawingDoc.Save3(swSaveAsOptions_Silent, lErrors, lWarnings) Else intReturn = swApp.SendMsgToUser2("Bitte die Zeichnung speichern!", swMbInformation, swMbOk) Exit Sub End If End If ' die Anzahl der Blätter holen, und dann in der Schleife eines nach ' dem anderen Abspeichern. Dazu ein Handle auf das aktuelle Blatt holen lAnzahlBl = swDrawingDoc.GetSheetCount Set swSheet = swDrawingDoc.GetCurrentSheet strDateinameLang = swDrawingDoc.GetPathName ' Statt mit einer Schleife jedes einzelne Zeichen eines Strings ' zu druchlaufen arbeite ich gerne mit Arrays, Split und Join ' Aus meiner Sicht zuverlässiger Dim PfadSegmente() As String PfadSegmente = Split(strDateinameLang, "\") Dim Index As Integer ReDim strPfade(UBound(PfadSegmente) - 1) As String Dim DateiNamePlusExtension() As String DateiNamePlusExtension = Split(PfadSegmente(UBound(PfadSegmente)), ".") For i = 0 To UBound(strPfade) strPfade(i) = PfadSegmente(i) Next i strPfad = Join(strPfade, "\") Dim strDateiNameOhneExtension As String strDateiNameOhneExtension = DateiNamePlusExtension(LBound(DateiNamePlusExtension)) strPDFPfad = strPfad + "\" + strDateiNameOhneExtension + "\PDF\" ' Prüfung, ob die Verzeichnisse überhaupt existiert, da sie sonst angelegt ' werden müssen Dim Dummy As Variant Dim strCheckPath As String strCheckPath = "" For Each Dummy In Split(strPDFPfad, "\") strCheckPath = strCheckPath & Dummy & "\" If Len(Dir(strCheckPath, vbDirectory)) = 0 Then MkDir strCheckPath Next ' wenn mehr als ein Blatt da ist könnte es sein, dass wir nicht auf ' Blatt 1 sind. In einem Makro müssen wir jetzt einen Trick machen, um ' auf das erste Blatt zurückzukommen. ' Dazu immer wieder ein Blatt zurückspringen und dabei den Blattnamen ' vergleichen; wenn der gleich bleibt haben wir das erste Blatt erreicht. strSheetName = swSheet.GetName For i = 1 To lAnzahlBl - 1 swDrawingDoc.SheetPrevious Set swSheet = swDrawingDoc.GetCurrentSheet If (strSheetName = swSheet.GetName) Then Exit For End If Next i ' jetzt sind wir garantiert auf dem ersten Blatt und können jetzt eins ' nach dem anderen Abspeichern For i = 1 To lAnzahlBl ' wir wollen alle Blätter als PDF mit den eingestellten Optionen abspeichern Set swSheet = swDrawingDoc.GetCurrentSheet strSheetName = swSheet.GetName strPDFDateiname = strPDFPfad & strDateiNameOhneExtension & " - " & strSheetName & ".pdf" ' dann erfolgt das Speichern als PDF mittels swModelDocExt.SaveAs ' wenn alles geklappt hat, wird TRUE zurückgeliefert, ansonsten FALSE Set swModelDocExt = swDrawingDoc.Extension Set swExportPDFData = swApp.GetExportFileData(1) bReturn = swExportPDFData.SetSheets(swExportData_ExportCurrentSheet, Nothing) bReturn = swModelDocExt.SaveAs(strPDFDateiname, swSaveAsCurrentVersion, swSaveAsOptions_Copy, _ swExportPDFData, lErrors, lWarnings) If bReturn Then strMsgtxt = strMsgtxt & "erfolgreich gespeichert: " & strDateiName & " - " & swSheet.GetName & _ ".pdf" & Chr$(10) & Chr$(13) Else intReturn = swApp.SendMsgToUser2("FEHLER BEIM SPEICHERN VON " & strDateiName & " - " & swSheet.GetName & _ ".pdf" & Chr$(10) & Chr$(13), swMbInformation, swMbOk) strMsgtxt = strMsgtxt & "*** FEHLER bei: " & strDateiName & " - " & swSheet.GetName & _ ".pdf" & Chr$(10) & Chr$(13) End If ' und wenn noch Blätter kommen dieses aktivieren If lAnzahlBl > i Then swDrawingDoc.SheetNext End If Next i ' und noch die Zusammenfassung übers Speichern ausgeben intReturn = swApp.SendMsgToUser2(strMsgtxt, swMbInformation, swMbOk) End Sub
[Diese Nachricht wurde von riesi am 14. Okt. 2021 editiert.] [Diese Nachricht wurde von riesi am 14. Okt. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mr.Robi Mitglied Tischler
Beiträge: 9 Registriert: 12.10.2021
|
erstellt am: 14. Okt. 2021 13:57 <-- editieren / zitieren --> Unities abgeben: Nur für techdot
|