Ich habe versucht, das .PL Makro (http://www.lynkoa.com/tutos/solidworks-creer-tous-les-pdf-pour-un-dossier-0) zu verwenden, mit dem Sie alle Pläne in einem Ordner in PDF konvertieren können, aber ich habe ein Problem, wenn ich es starte.
Ich erhalte die Meldung "Kompilierungsfehler: Sub oder Funktion nicht definiert" in der Zeile Pfad = BrowseFolder("Pfad/Ordner auswählen")
Ich habe ein wenig im Forum gesucht und gesehen, dass andere Leute das gleiche Problem hatten, aber ich konnte keine Lösung finden.
Wenn ich keinen Fehler mache, fehlt dem Makro ein Stück. BrowseFolder ist eine Unterfunktion, daher fehlt sie meiner Meinung nach, daher die Fehlermeldung.
@d.roger erhalte ich immer noch den gleichen Fehler, nachdem ich "Microsoft Shell Controls And Automation" hinzugefügt habe . Ich habe verglichen und habe die gleichen Referenzen wie auf Ihrem Screenshot aktiviert.
Ich habe gerade die Art und Weise geändert, wie das Ordnerauswahlfenster geöffnet wird. Nicht getestet das gesamte ocmVerhalten.
Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc
Dim sFileName As String
Dim vFileName As String
Dim Path As String
Dim nPath As String
Dim nErrors As Long
Dim nWarnings As Long
Dim swDraw As SldWorks.DrawingDoc
Dim swCustProp As CustomPropertyManager
Dim swView As SldWorks.View
Dim ConfigName As String
Dim i As Long
Dim valOut1 As String
Dim valOut2 As String
Dim resolvedValOut1 As String
Dim resolvedValOut2 As String
Dim PartNo As String
Dim nFileName As String
Dim swDocs As Variant
Dim PDFpath As String
Dim currpath As String
Dim PartNoDes As String
Dim objShell As Shell
Dim objFolder As Folder
Sub main()
Set swApp = Application.SldWorks
Dim swExportPDFData As SldWorks.ExportPdfData
Set swExportPDFData = swApp.GetExportFileData(1)
swExportPDFData.ViewPdfAfterSaving = False
Set objShell = New Shell
Set objFolder = objShell.BrowseForFolder(0, "Example", 0, 0)
If (Not objFolder Is Nothing) Then
Path = objFolder.Self.Path
Path = Path + "\"
PDFpath = Path & "PDF"
If Dir(PDFpath, vbDirectory) = "" Then MkDir PDFpath
sFileName = Dir(Path & "*.slddrw")
sFileName = Dir(Path & "*.slddrw")
Do Until sFileName = ""
Set swModel = swApp.OpenDoc6(Path + sFileName, swDocDRAWING, swOpenDocOptions_Silent, "", nErrors, nWarnings)
Set swModel = swApp.ActiveDoc
Set swDraw = swApp.ActiveDoc
Set swView = swDraw.GetFirstView
Set swView = swView.GetNextView
Set swModel = swView.ReferencedDocument
PDFpath = currpath & "PDF"
If Dir(PDFpath, vbDirectory) = "" Then MkDir PDFpath
If swModel.GetType = swDocPART Then
PartNoDes = Mid(swDraw.GetPathName, InStrRev(swDraw.GetPathName, "\") + 1)
PartNoDes = Right(PartNoDes, Len(PartNoDes) - 14)
PartNoDes = Left(PartNoDes, Len(PartNoDes) - 7)
PartNo = Mid(swModel.GetPathName, InStrRev(swModel.GetPathName, "\") + 1)
PartNo = Left(PartNo, Len(PartNo) - 7)
Set swCustProp = swModel.Extension.CustomPropertyManager(swView.ReferencedConfiguration)
ConfigName = swView.ReferencedConfiguration
swCustProp.Get2 "Description", valOut1, resolvedValOut1
swCustProp.Get2 "Revision", valOut2, resolvedValOut2
nFileName = PDFpath & "\" & PartNo & "-" & ConfigName & "-" & resolvedValOut2 & " " & PartNoDes
swDraw.SaveAs3 nFileName & ".PDF", 0, 0
ElseIf swModel.GetType = swDocASSEMBLY Then
PartNoDes = Mid(swDraw.GetPathName, InStrRev(swDraw.GetPathName, "\") + 1)
PartNoDes = Right(PartNoDes, Len(PartNoDes) - 11)
PartNoDes = Left(PartNoDes, Len(PartNoDes) - 7)
PartNo = Mid(swModel.GetPathName, InStrRev(swModel.GetPathName, "\") + 1)
PartNo = Left(PartNo, Len(PartNo) - 7)
Set swCustProp = swModel.Extension.CustomPropertyManager("")
swCustProp.Get2 "Description", valOut1, resolvedValOut1
swCustProp.Get2 "Revision", valOut2, resolvedValOut2
nFileName = PDFpath & "\" & PartNo & "-" & resolvedValOut2 & " " & PartNoDes
swDraw.SaveAs3 nFileName & ".PDF", 0, 0
End If
swApp.QuitDoc swDraw.GetPathName
Set swDraw = Nothing
Set swModel = Nothing
sFileName = Dir
Loop
End If
Set objFolder = Nothing
Set objShell = Nothing
MsgBox "All Done"
End Sub
Ich habe es geschafft, die Datei an der richtigen Stelle zu speichern, indem ich Pfad & zu den Zeilen hinzugefügt habe, die die Variable nFileName definieren
Auf der anderen Seite konvertiert das Makro die anderen Ebenen im Ordner immer noch nicht
Hier ist das Makro, das ich erhalte, nachdem ich ein paar andere Bearbeitungen vorgenommen habe, weil der Name der PDF-Datei nicht mit dem übereinstimmte, was ich wollte