Macro Help: Open All Drawing or/and Part or_and Assembly In Folder and Save As

I have created a macro  that is supposed to do the following;

 

-Open a Folder Selection Box (where the user selects a folder)

-Open all  files in the selected folder (one by one, one after the other)

-Check to see if there is a folder called "customproperties" in the directory, if not then create one

-Save the open  file as a pdf/step, building the save as name from custom properties in the referenced model

-Close the file

-Move on to next one

 

Now in my code below (and I have attached the macro file because there is the browse folder module attached) the macro will complete one file, close the file and show the msgbox if that "customproperties" folder exists, if the folder does not exist it will create the folder, save the open file, close the drawing and fail on "filename = Dir" (run-time error '5')

 

If I comment out the "If Dir(saveFolder2, vbDirectory) = "" Then MkDir saveFolder2" it runs perfectly and saves the drawings all in the selected directory.

 

Can anyone please help me solve this? I need Yours help. I dont konw what is happend. Where did I make a mistake?

 

Dim swApp As Object<br>Dim longStatus As Long<br>Dim longWarning As Long<br>Dim openFolder, saveFolder, saveFolder2 As String<br>Dim newModelExtension, newDrawingExtension As String, newDrawing2Extension As String<br>Dim customProperty As String<br><br>Function BrowseForFolder(Optional OpenAt As Variant) As Variant<br>'Function purpose: To Browser for a user selected folder.<br>'If the "OpenAt" path is provided, open the browser at that directory<br>'NOTE: If invalid, it will open at the Desktop level<br><br>Dim ShellApp As Object<br><br>'Create a file browser window at the default folder<br>Set ShellApp = CreateObject("Shell.Application"). _<br>BrowseForFolder(0, "Please choose a folder", 0, OpenAt)<br><br>'Set the folder to that selected. (On error in case cancelled)<br>On Error Resume Next<br>BrowseForFolder = ShellApp.self.path<br>On Error GoTo 0<br><br>'Destroy the Shell Application<br>Set ShellApp = Nothing<br><br>'Check for invalid or non-entries and send to the Invalid error<br>'handler if found<br>'Valid selections can begin L: (where L is a letter) or<br>'\\\\ (as in \\\\servername\\sharename. All others are invalid<br>Select Case Mid(BrowseForFolder, 2, 1)<br>Case Is = ":"<br>If Left(BrowseForFolder, 1) = ":" Then GoTo Invalid<br>Case Is = "\\"<br>If Not Left(BrowseForFolder, 1) = "\\" Then GoTo Invalid<br>Case Else<br>GoTo Invalid<br>End Select<br><br>Exit Function<br><br>Invalid:<br>'If it was determined that the selection was invalid, set to False<br>BrowseForFolder = False<br>End Function<br><br>Sub SaveAs(swModel As ModelDoc2, filename As String)<br>Dim Errors As Long<br>Dim Warnings As Long<br>Dim value As Boolean<br><br>swModel.ViewZoomtofit2<br><br>value = swModel.extension.SaveAs(filename, swSaveAsVersion_e.swSaveAsCurrentVersion, swSaveAsOptions_e.swSaveAsOptions_Silent, Nothing, Errors, Warnings)<br><br>End Sub<br><br>Function GetCustomProperty(swModel As ModelDoc2, propertyName As String) As String<br>GetCustomProperty = ""<br><br>Dim valueOut As String<br>Dim evaluatedOut As String<br>Dim wasResolved As Boolean<br>Dim result As Integer<br><br>result = swModel.extension.CustomPropertyManager("").Get5(propertyName, False, valueOut, evaluatedOut, wasResolved)<br><br>If result = 2 And wasResolved = True Then<br>GetCustomProperty = evaluatedOut<br>End If<br><br>End Function<br><br>Sub Convert(filePath As String, filename As String, propertyToAppend As String, propertyValue As String, covertReferences As Boolean)<br>Dim swModel As ModelDoc2<br>Dim propVal As String<br>Dim docType As swDocumentTypes_e<br>Dim newExtension As String<br>Dim newExtension2 As String<br>Dim newFilename As String<br>Dim Errors As Long<br><br>newFilename = filename<br>saveFolder2 = saveFolder<br><br>docType = GetDocType(filePath)<br><br>If docType = swDocNONE Then<br>GoTo Skip_File<br>End If<br><br>newExtension = GetNewExtension(docType)<br>newExtension2 = GetNewExtension2(docType)<br><br>' Open<br>Set swModel = swApp.OpenDoc6(filePath, docType, swOpenDocOptions_e.swOpenDocOptions_LoadModel, "", longStatus, longWarning)<br><br>If newExtension = ".stl" Or newExtension = ".igs" Or newExtension = ".step" Or newExtension = ".stp" Or newExtension = ".iges" Then<br>'Activate the doc in order to convert to IGES, STL and STEP<br>Set swModel = swApp.ActivateDoc3(filename + Right(filePath, 7), True, swRebuildOnActivation_e.swRebuildActiveDoc, Errors)<br>End If<br><br>If swModel Is Nothing Then<br>GoTo Skip_File<br>End If<br><br>' Append the custom property to the foldername<br>If Not propertyToAppend = "" Then<br>If propertyValue = "" Then<br>propVal = GetCustomProperty(swModel, propertyToAppend)<br><br><br>saveFolder2 = saveFolder2 & "\\" & propVal<br><br><br><br>If Dir(saveFolder2, vbDirectory) = "" Then MkDir saveFolder2<br><br><br>' Force rebuild (ctrl + q)<br>swModel.ForceRebuild3 (False)<br><br>' Convert<br>SaveAs swModel, saveFolder2 & "\\" & newFilename & newExtension<br>SaveAs swModel, saveFolder2 & "\\" & newFilename & newExtension2<br><br>Else<br><br><br>saveFolder2 = saveFolder2 & "\\" & propVal<br><br><br>If Dir(saveFolder2, vbDirectory) = "" Then MkDir saveFolder2<br><br><br>' Force rebuild (ctrl + q)<br>swModel.ForceRebuild3 (False)<br><br>' Convert<br>SaveAs swModel, saveFolder2 & "\\" & newFilename & newExtension<br>SaveAs swModel, saveFolder2 & "\\" & newFilename & newExtension2<br><br>End If<br>End If<br><br><br><br>If covertReferences Then<br>Dim dependencies As Variant<br>dependencies = swModel.GetDependencies2(False, False, False)<br><br>For i = 0 To (UBound(dependencies) - 1) / 2<br>Convert "" + dependencies(2 * i + 1), "" + dependencies(2 * i), customProperty, propVal, False<br>Next i<br>End If<br><br>' Close<br>Set swModel = Nothing<br><br>swApp.CloseDoc filePath<br><br>Skip_File:<br><br>End Sub<br><br>Function GetDocType(filename As String) As swDocumentTypes_e<br>Dim extension As String<br>extension = Right(filename, 3)<br><br>Select Case LCase(extension)<br>Case "drw"<br>GetDocType = swDocDRAWING<br><br>Case "prt"<br>GetDocType = swDocPART<br><br>Case "asm"<br>GetDocType = swDocASSEMBLY<br><br>Case Else<br>GetDocType = swDocNONE<br><br>End Select<br>End Function<br><br>Function GetNewExtension(docType As swDocumentTypes_e) As String<br>Select Case docType<br>Case swDocDRAWING<br>GetNewExtension = newDrawingExtension<br><br><br>Case swDocPART<br>GetNewExtension = newModelExtension<br><br>Case swDocASSEMBLY<br>GetNewExtension = newModelExtension<br><br>Case Else<br>GetNewExtension = ""<br><br>End Select<br>End Function<br>Function GetNewExtension2(docType As swDocumentTypes_e) As String<br>Select Case docType<br><br>Case swDocDRAWING<br>GetNewExtension2 = newDrawing2Extension<br><br>Case Else<br>GetNewExtension2 = ""<br><br>End Select<br>End Function<br><br>Sub main()<br>Set swApp = Application.SldWorks<br><br>Dim UserForm As UserForm1: Set UserForm = New UserForm1<br>UserForm.Show<br><br>If UserForm.CancelButton.Cancel Then<br>Exit Sub<br>End If<br><br>openFolder = UserForm.OpenFolderTextBox.Text<br>saveFolder = UserForm.SaveFolderTextBox.Text<br>newModelExtension = UserForm.ConvertModeComboBox<br>newDrawingExtension = UserForm.ConvertDrawingComboBox<br>newDrawing2Extension = UserForm.ConvertDrawing2ComboBox<br><br>If UserForm.AppendRevisionCheckBox.value = True Then<br>customProperty = "DR-Material"<br>End If<br>If UserForm.Savedrawingsas2.value = True Then<br>newDrawing2Extension = UserForm.ConvertDrawing2ComboBox '----------------------------------????????????<br>End If<br><br>' Create the save to folder if it doesn't exist<br><br><br>If Dir(saveFolder, vbDirectory) = "" Then<br>MkDir (saveFolder)<br>End If<br><br>Dim filename As String<br>filename = Dir(openFolder & "\\" & UserForm.FilterTextBox.Text)<br><br>Do While filename <> ""<br>' Convert the file<br>Convert openFolder & "\\" & filename, Replace(filename, Right(filename, 7), ""), customProperty, "", UserForm.ConvertReferences.value<br><br>filename = Dir<br>Loop<br><br>MsgBox "Done!", , "Convert Files"<br>End Sub<span class="line-numbers-rows"><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span><span>‍</span></span>
SolidworksApi/macros