AnsweredAssumed Answered

Macro Issuse Network Folders vs Mapped Folders

Question asked by Andrew Collins on Feb 5, 2018
Latest reply on Feb 5, 2018 by Alex Burnett



I'm using a code from Keith Rice to save drawings off as PDF's in a specific location on our network.


An issue we have run into is when the file we are trying to save as pdf was opened through the network drive we get "run-time error 52 bad filename or number" on line 45 of the code.


\\XXXX\Design\DRAWINGS CONSTRUCTION\0-2018\Job Name\SolidWorks Files\Drawings




N:\DRAWINGS CONSTRUCTION\0-2018\Job Name\SolidWorks Files\Drawings - This way runs the macro correctly.


From my searches it looks as though the \\xxxx name isn't a valid name.We'd like to be able to run this macro from either location, is this possible?


Thanks for any help.


Const NEW_EXTENSION As String = "PDF"
Const FOLDER_NAME As String = "Released Drawings"
Sub main()
    If FOLDER_NAME = Empty Then Exit Sub
    Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    ' Create new file name
    Dim strModelPath As String
    Dim strSavePath As String
    Dim strSaveFolder As String
    Dim strFileName As String
    Dim vSplit As Variant
    strModelPath = swModel.GetPathName
    If swModel.GetPathName = Empty Then
        swApp.SendMsgToUser "Please save model."
        Exit Sub
    End If
    strFileName = Right(strModelPath, _
        Len(strModelPath) - InStrRev(strModelPath, "\"))
    vSplit = Split(strFileName, ".")
    strFileName = vSplit(0) & " REV_" & swModel.CustomInfo2("", "Revision") & "." & NEW_EXTENSION
    ' Create new directory
    vSplit = Split(strModelPath, "\")
    Dim intDirAbove As Integer
    Dim i As Integer
    Dim bFound As Boolean
    bFound = False
    For i = 0 To UBound(vSplit) - intDirAbove
        strSaveFolder = strSaveFolder & vSplit(i) & "\"
        If Dir(strSaveFolder & FOLDER_NAME, vbDirectory) <> Empty Then
            bFound = True
            Exit For
        End If
    Next i
    If bFound = False Then
        swApp.SendMsgToUser "Failed to find correct folder."
        Exit Sub
    End If
    strSavePath = strSaveFolder & FOLDER_NAME & "\" & strFileName
    Debug.Print "Original path: " & strModelPath
    Debug.Print "New save path: " & strSavePath
    ' Save
    bRet = swModel.Extension.SaveAs(strSavePath, swSaveAsCurrentVersion, _
        swSaveAsOptions_Silent, Nothing, Empty, Empty)
    If bRet = False Then swApp.SendMsgToUser "Problems saving file. Check if file is open"
End Sub