AnsweredAssumed Answered

Run Macro in Task Scheduler

Question asked by Alex Graff on Mar 11, 2015
Latest reply on Apr 16, 2015 by Alex Graff


I just started writing macros yesterday so I am very new to this. By sifting through various forums and many discussions on this forum I managed to create a macro to do what I need. With a drawing open it deletes the current revision table and inserts a new revision table in the proper location. It isn't quite perfect because I was having trouble with the proper anchor location but somehow it is working. I now need a way to run this in task scheduler so it will open, change the revision table and save all the drawings in a given directory. Any help with this would be great. I will post what I currently have. Like I said it is bits and pieces that I put together that I found so I can't take much credit for the work done. I am not familiar with the namespace and arguments everything uses so it might be a little messy still.


I believe I need to take what I have and update it and save it as a .swb file. I know I need to define a string and then have the string be $$$my_file_path$$$ so I can input the desired directory in the parameters in task managers custom task. I am just getting to the point where I am getting lost with only minimal programming experience and only a day in SolidWorks API. The code below is what I have working as a macro on an open file. I am getting lost when it comes to opening changing and saving multiple files in a folder.


It took me 6 hours to get only as far as I am so I figured it was time to reach out for help. If I cant get this working I'm stuck doing all several hundred drawings by hand, which won't be as bad as it was now that I at least have a macro... but still a lengthy process.


Thanks in advance!


Const TABLE_TEMPLATE As String = "H:\SolidWorks\Revision Table Templates\MARIS REVISION.sldrevtbt"

Dim swApp As SldWorks.SldWorks

Dim swModel As SldWorks.ModelDoc2

Dim swDraw As SldWorks.DrawingDoc

Dim swSheet As SldWorks.Sheet

Dim vViews As Variant

Dim swView As SldWorks.View

Dim swTableAnn As SldWorks.TableAnnotation

Dim swAnn As SldWorks.Annotation

Dim swRevTableAnn As SldWorks.RevisionTableAnnotation






Sub main()

    Set swApp = Application.SldWorks

    Set swModel = swApp.ActiveDoc

    Set swDraw = swModel

    Set swSheet = swDraw.GetCurrentSheet


    'Delete existing revision table

    Set swView = swDraw.GetFirstView

    Do While Not swView Is Nothing

        Set swTableAnn = swView.GetFirstTableAnnotation

        While Not swTableAnn Is Nothing

            If swTableAnn.Type = swTableAnnotation_RevisionBlock Then

                Set swAnn = swTableAnn.GetAnnotation

                swAnn.Select3 False, Nothing

                swModel.Extension.DeleteSelection2 Empty

                Exit Do

            End If

            Set swTableAnn = swTableAnn.GetNext


        Set swView = swView.GetNextView



    'Add new revision table

    Set swRevTableAnn = swSheet.InsertRevisionTable(True, Empty, Empty, _

        swBOMConfigurationAnchor_TopRight, TABLE_TEMPLATE)

End Sub