There are a couple of reasons why examples from the API help sometimes do not work:
1) The example is a function or subroutine that is meant to be used as part of a bigger program. It is not a standalone routine.
2) The VBA editor has automatically formatted the code when it was pasted in.
You may be seeing problem #2. The problem is that the formatting in the help file gets carried over when you copy and paste into the VBA editor. You can see this happen in the "Make All Assembly Components Visible" example. The first sub procedure looks like this in the API help file:
Sub TraverseComponent _
( _
swComp As SldWorks.Component2, _
nLevel As Long _
)
But looks like this when pasted into the VBA editor
Sub TraverseComponent _
()
( _
swComp As SldWorks.Component2, _
nLevel As Long _
)
Notice the extra brackets on the second line? They were added in automatically. Here's how it works - the underscore character is used to allow code to continue onto the next line, but there is no code on the next line because the code pastes into the VBA editor with double spacing. You will see this highlighted in the VBA editor if you paste directly from the API help.
Here is a solution:
1) Paste from the API help into MS Word
2) Select all code (Cntl-A) and under "Styles and Formatting" select "Clear Formatting"
3) Select all code and paste into the VBA editor.
Your code should now compile properly. Here is what the macro should look like in the VBA editor:
Option Explicit
Public Enum swComponentVisibilityState_e
swComponentHidden = 0
swComponentVisible = 1
End Enum
Sub TraverseComponent _
( _
swComp As SldWorks.Component2, _
nLevel As Long _
)
Dim vChildCompArr As Variant
Dim vChildComp As Variant
Dim swChildComp As SldWorks.Component2
Dim swCompConfig As SldWorks.Configuration
Dim sPadStr As String
Dim i As Long
For i = 0 To nLevel - 1
sPadStr = sPadStr + " "
Next i
vChildCompArr = swComp.GetChildren
For Each vChildComp In vChildCompArr
Set swChildComp = vChildComp
Debug.Print sPadStr & swChildComp.Name2 & " <" & swChildComp.ReferencedConfiguration & ">"
If swComponentHidden = swChildComp.Visible Then
swChildComp.Visible = swComponentVisible
End If
TraverseComponent swChildComp, nLevel + 1
Next
End Sub
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swAssy As SldWorks.AssemblyDoc
Dim swConf As SldWorks.Configuration
Dim swRootComp As SldWorks.Component2
Dim bRet As Boolean
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swConf = swModel.GetActiveConfiguration
Set swRootComp = swConf.GetRootComponent
Debug.Print "File = " & swModel.GetPathName
TraverseComponent swRootComp, 1
End Sub