AnsweredAssumed Answered

Macro fails to run twice...Runtime Error 462

Question asked by Cad Admin on Jun 14, 2018
Latest reply on Jun 26, 2018 by Cad Admin

The following beginning of mycode below runs fine the first time, but errors out on the second, if i open it up in the debugger, and close, it will run again once then not the second.  I get the proverbial  "Run-time error 462 : The remote server machine does not exist or is unavailable”


Basically the code opens an excel doc that is identically named to the Solidworks file that is open.


I've looked at a lot of articles on it here and other cites...  Ive tried the getobject vs createobject, late binding, and a bunch of other things.  My head is spinning.


Ironically stepping through the code on the second run (i know it will fail), it WILL, open excel, it WILL open the file, it fails on the line xlSheet.Sort.SortFields.Add...

Function excel_main()


    Dim SwApp                                   As SldWorks.SldWorks

    Dim xlApp                                   As Excel.Application

    Dim xlWorkbook                              As Excel.Workbook

    Dim xlSheet                                 As Excel.Worksheet


    Dim swModel                                 As SldWorks.ModelDoc2

    Dim swCustPropMgr                           As SldWorks.CustomPropertyManager

    Dim Fname                                   As String

    Dim xlOpen                                  As String


    Set SwApp = Application.SldWorks

    Set swModel = SwApp.ActiveDoc


    Set swCustPropMgr = swModel.Extension.CustomPropertyManager(Empty)

        Fname = swCustPropMgr.Get("Name")

        xlOpen = Fname + ".xls"


    On Error Resume Next

    Set xlApp = CreateObject("Excel.Application")

    On Error GoTo 0

    If xlApp Is Nothing Then Set xlApp = CreateObject("Word.Application")


    xlApp.Visible = True


    Set xlWorkbook = xlApp.Workbooks.Open(xlOpen)


    Set xlSheet = xlApp.Worksheets(Fname)


    xlSheet.Sort.SortFields.Add _

        Key:=Range("A2"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _