Hello All,
So with help from people in the forum I was able to successfully create a macro to work through a directory opening each drawing file, deleting an old BOM, inserting a new one and then saving and closing. After getting that working I now realize there is more work to be done to make it user friendly at my work. My goal is to be able to run the macro to run on multiple files at one and walk away. The problem I am having is that we use workgroup PDM and some of the files in the working directory don't have ownership on the computer in use and an error message poos up. I am not looking for a way to take ownership, I am looking for a way to just check if a file is read only and if that file is, just skip it and move on to the next. I would imagine the easiest way to do this would be with an If statement but I don't the the code to check read only status.
My next catch is I will occasionally run across a drawing that has a pop-up dialog box asking to confirm drawing view update when the document tries to save. Is there a way to have the macro confirm this and move on to the next drawing? Possibly even have box in front of "Don't prompt me again in this session" be checked so it is only a problem once.
I have the same thing with the pop-up "Component documents must be saved."
Thank you all in advance for your help. I will post what code i currently have as well.
Dim swApp As SldWorks.SldWorks
Dim swDoc As ModelDoc2
Dim fileerror As Long
Dim filewarning As Long
Const TABLE_TEMPLATE As String = "Revision table template location"
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
Const folder As String = "C:\working\"
Dim files As Variant
Sub main()
Set swApp = Application.SldWorks
files = Dir(folder & "*.slddrw", vbNormal)
Do While files <> ""
'Open files in folder
swApp.OpenDoc6 folder & files, swDocDRAWING, 0, "", fileerror, filewarning
files = Dir
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
Wend
Set swView = swView.GetNextView
Loop
'Add new revision table
Set swRevTableAnn = swSheet.InsertRevisionTable(True, Empty, Empty, _
swBOMConfigurationAnchor_TopRight, TABLE_TEMPLATE)
'Save
swModel.Save3 0, 0, 0
'Get title and close
Dim swTitle As String
Dim Part As Object
Set Part = Nothing
swTitle = swModel.GetTitle
swApp.CloseDoc swTitle
Loop
End Sub
SolidworksApi macros