30 Replies Latest reply on Jul 26, 2017 7:32 AM by Cad Admin

    VBA - Stacked Balloons for Toolbox Items

    Cad Admin

      VBA Macro

       

      Currently my company uses a stacked balloon for toolbox items.  I'm trying to create a macro that selects all balloons on a sheet then checks to see if they are a toolbox item. & if so adds a stacked balloon to the original balloons, in a specific format.

       

      What i have so far...

      • i can select a balloon,
      • I can determine if the attached item is a toolbox item.
      • I can add a balloon in the per-determined format.

       

      Issues..

      • I can't seem to change the value of the stacked balloon to read the "description" custom property of the detail it is ballooning.
      • selection is based off a "recorded macro"... the add-too isn't following the "user selection" it using the "recorded selection"

       

      Future

      • I would like run this on all balloons on all sheets..without user selection of the balloons...more automatic.

       

      Warning(LOL): Code below is a Hodge-Podge of snippets i either have found or currently use...

       

      Option Explicit

       

      Sub main()

       

          Dim swApp                            As SldWorks.SldWorks

          Dim swModel                         As SldWorks.ModelDoc

          Dim swSelMgr                       As SldWorks.SelectionMgr

          Dim swNote                      As SldWorks.Note

          Dim swAnn                       As SldWorks.Annotation

          Dim modelDocExt                 As SldWorks.ModelDocExtension

          Dim vAttEntArr                  As Variant

          Dim vAttEntTypeArr              As Variant

          Dim swEnt                       As SldWorks.Entity

          Dim swComp                      As SldWorks.Component

          Dim swCompModel                 As SldWorks.ModelDoc

          Dim i                           As Long

          Dim bRet                        As Boolean

          Dim ret                         As Long

          Dim boolstatus                  As Boolean

        

          Set swApp = Application.SldWorks

          Set swModel = swApp.ActiveDoc

          Set swSelMgr = swModel.SelectionManager

          Set swNote = swSelMgr.GetSelectedObject5(1)

          Set swAnn = swNote.GetAnnotation

        

          Debug.Assert swNote.IsBomBalloon

       

          vAttEntArr = swAnn.GetAttachedEntities2: If IsEmpty(vAttEntArr) Then Exit Sub

          vAttEntTypeArr = swAnn.GetAttachedEntityTypes

       

          Debug.Assert UBound(vAttEntArr) = UBound(vAttEntTypeArr)

       

          Debug.Print "File = " & swModel.GetPathName

          Debug.Print "  Name                 = " & swAnn.GetName

          Debug.Print "    Is stacked         = " & swNote.IsStackedBalloon

          Debug.Print "    Is stacked master  = " & swNote.IsStackedBalloonMaster

       

          For i = 0 To UBound(vAttEntArr)

              Debug.Print "    AttEntType         = " & vAttEntTypeArr(i)

       

              If swSelNOTHING <> vAttEntTypeArr(i) Then

                  Set swEnt = vAttEntArr(i)

                  Set swComp = swEnt.GetComponent

                  Set swCompModel = swComp.GetModelDoc

                  Set modelDocExt = swCompModel.Extension

                  ret = modelDocExt.ToolboxPartType

       

                  Debug.Print "    AttEnt             = " & swComp.GetPathName & " <" & swComp.ReferencedConfiguration & ">"

                  Debug.Print "    Toolbox part type  = " & ret

      '----------------------------------------Add Balloon Code Here--------------------------------------------------

                  If ret <> 0 Then

                  Dim Part As Object

                  Dim longstatus As Long, longwarnings As Long

                    

                      Set Part = swApp.ActiveDoc

                      boolstatus = Part.Extension.SelectByID2("DetailItem561@Drawing View4", "NOTE", 0.330553225698155, 0.435615531289275, 0, False, 0, Nothing, 0)

                      Set swNote = Part.SelectionManager.GetSelectedObject3(1)

                      boolstatus = Part.Extension.SelectByRay(0.271848815289342, 0.448482251378878, 3.97671893132383E-02, 0, 0, -1, 5.46835603808116E-04, 2, False, 0, 0)

                      Dim myBalloonStack      As Object

                      Dim swNote2             As Object

                    

                      If Not swNote Is Nothing Then

                         Set myBalloonStack = swNote.GetBalloonStack()

                         Set swNote2 = myBalloonStack.AddTo(swBalloonTextContent_e.swBalloonTextCustom, "Description", 1, "")

                              Dim doubleQuote As String

                              doubleQuote = Chr(34)

                              swNote2.PropertyLinkedText = "$PRPMODEL:" & doubleQuote & "Description" & doubleQuote

                              boolstatus = swNote2.SetBalloon(swBalloonStyle_e.swBS_Underline, swBalloonFit_e.swBF_Tightest)

                      End If

                  End If

      '-------------------------------------------------------------------------------------------------------------

             

              End If

       

          Next i

       

      End Sub

       

      As always all help is appreciated...Thanks in advance

        • Re: VBA - Stacked Balloons for Toolbox Items
          Cad Admin

          I believe the issue is with swNote2.PropertyLinkedText = "$PRPMODEL:" & doubleQuote & "Description" & doubleQuote

          It works in a different macro, but it looks like it is not pulling the property value of the model through the balloon...

           

          Still perplexing...lol

          • Re: VBA - Stacked Balloons for Toolbox Items
            Cad Admin

            Still have no luck, Is it possible to use swBalloonTextContent_e.swBalloonTextCustomProperties, directly in addto & if not, would EditBalloonProperties2 after be an acceptable solution...even so i cant seem to get this one

              • Re: VBA - Stacked Balloons for Toolbox Items
                Josh Brady

                OK, 2 things...

                Looks like you are selecting your entity for the stack add with hard-coded coords.

                You are already getting the attached entity in the beginning of your code as swEnt. Therefore, instead of SelectByRay, use:

                 

                swEnt.Select4 False, Nothing

                 

                Then, it does appear that SW is completely ignoring all the arguments of myBalloonStack.AddTo.  So you need to use the line:

                 

                swNote2.SetBomBalloonText 1, "$PRPMODEL:""Description""", 1, ""

                 

                You don't need that doubleQuote thing.  With vba, two quotes in a row inside the outer quotes make one quote mark.

                  • Re: VBA - Stacked Balloons for Toolbox Items
                    Cad Admin

                    what if instead of pre-selecting, i could run on all balloons on a sheet? Would the method be similar, and doable?

                    thanks for the double quote thing...i remember it, but this was a spinet from some older code.

                      • Re: VBA - Stacked Balloons for Toolbox Items
                        Josh Brady

                        Basically:

                         

                        Get the current document

                        Get the first view

                        while view not nothing

                             view::getfirstnote

                             while note not nothing

                                  check if balloon

                                       do all the stuff

                                  note:getnext

                             wend

                             view::getnextview

                        wend

                          • Re: VBA - Stacked Balloons for Toolbox Items
                            Cad Admin

                            I reworked what i had and i can filter down to the instance i want to add to, but i always seem to fall short with dealing with the swnote/annotation...

                             

                            See updated below

                             

                            Option Explicit

                             

                            Sub main()

                               

                                Dim swApp                       As SldWorks.SldWorks

                                Dim swModel                     As ModelDoc2

                                Dim swDraw                      As DrawingDoc

                                Dim swView                      As View

                                Dim swNote                      As Note

                                Dim swAnn                       As Annotation

                                Dim swSelMgr                    As SldWorks.SelectionMgr

                                Dim modelDocExt                 As SldWorks.ModelDocExtension

                                Dim vAttEntArr                  As Variant

                                Dim vAttEntTypeArr              As Variant

                                Dim swEnt                       As SldWorks.Entity

                                Dim swComp                      As SldWorks.Component

                                Dim swCompModel                 As SldWorks.ModelDoc

                                Dim i                           As Long

                                Dim bRet                        As Boolean

                                Dim ret                         As Long

                                Dim boolstatus                  As Boolean

                               

                                Set swApp = Application.SldWorks

                                Set swModel = swApp.ActiveDoc

                                Set swDraw = swModel

                               

                                Set swView = swDraw.GetFirstView

                                Set swView = swView.GetNextView

                                   

                                While Not swView Is Nothing

                                    Debug.Print "-------------------"

                                    Debug.Print swView.Name

                                   

                                    Set swNote = swView.GetFirstNote

                                   

                                    While Not swNote Is Nothing

                                    Set swAnn = swNote.GetAnnotation

                                       

                                        Debug.Assert swNote.IsBomBalloon

                                       

                                        vAttEntArr = swAnn.GetAttachedEntities2: If IsEmpty(vAttEntArr) Then Exit Sub

                                        vAttEntTypeArr = swAnn.GetAttachedEntityTypes

                                       

                                        Debug.Assert UBound(vAttEntArr) = UBound(vAttEntTypeArr)

                             

                                        For i = 0 To UBound(vAttEntArr)

                             

                                            If swSelNOTHING <> vAttEntTypeArr(i) Then

                                                Set swEnt = vAttEntArr(i)

                                                Set swComp = swEnt.GetComponent

                                                Set swCompModel = swComp.GetModelDoc

                                                Set modelDocExt = swCompModel.Extension

                                                ret = modelDocExt.ToolboxPartType

                                               

                                                If ret <> 0 And swNote.GetBalloonStyle <> 10 Then

                                               

                                                    Debug.Print "File = " & swModel.GetPathName

                                                    Debug.Print "  Name                 = " & swAnn.GetName

                                                    Debug.Print "    Is stacked         = " & swNote.IsStackedBalloon

                                                    Debug.Print "    Is stacked master  = " & swNote.IsStackedBalloonMaster

                                                    Debug.Print "    AttEntType         = " & vAttEntTypeArr(i)

                                                    Debug.Print "    Balloon style      = " & swNote.GetBalloonStyle

                                                    Debug.Print "    Toolbox Part       = " & ret

                                                   

                            '                        Dim Part As Object

                            '                        Dim longstatus As Long, longwarnings As Long

                            '

                            '                        Set Part = swApp.ActiveDoc

                            '                        boolstatus = Part.Extension.SelectByID2("DetailItem561@Drawing View4", "NOTE", 0.330553225698155, 0.435615531289275, 0, False, 0, Nothing, 0)

                            '                        Set swNote = Part.SelectionManager.GetSelectedObject3(1)

                            '                        boolstatus = Part.Extension.SelectByRay(0.271848815289342, 0.448482251378878, 3.97671893132383E-02, 0, 0, -1, 5.46835603808116E-04, 2, False, 0, 0)

                                                   

                                                    Dim myBalloonStack      As Object

                                                    Dim swNote2             As Object

                                                   

                                                    If Not swNote Is Nothing Then

                                                        Set myBalloonStack = swNote.GetBalloonStack()

                                                        Set swNote2 = myBalloonStack.AddTo(swBalloonTextContent_e.swBalloonTextCustom, "Description", 1, "")

                                                        swNote2.SetBomBalloonText 1, "$PRPMODEL:""Description""", 1, ""

                                                        boolstatus = swNote2.SetBalloon(swBalloonStyle_e.swBS_Underline, swBalloonFit_e.swBF_Tightest)

                                                    End If

                                                End If

                                            End If

                                        Next i

                                           

                                    Set swNote = swNote.GetNext

                             

                                    Wend

                                       

                                Set swView = swView.GetNextView

                             

                                Wend

                               

                            End Sub

                              • Re: VBA - Stacked Balloons for Toolbox Items
                                Josh Brady

                                OK, so 'memmer when I said "OK, 2 things..."?

                                 

                                You hafta do both of those things.

                                 

                                Option Explicit
                                
                                Sub main()
                                   
                                    Dim swApp                       As SldWorks.SldWorks
                                    Dim swModel                     As ModelDoc2
                                    Dim swDraw                      As DrawingDoc
                                    Dim swView                      As View
                                    Dim swNote                      As Note
                                    Dim swAnn                       As Annotation
                                    Dim swSelMgr                    As SldWorks.SelectionMgr
                                    Dim modelDocExt                 As SldWorks.ModelDocExtension
                                    Dim vAttEntArr                  As Variant
                                    Dim vAttEntTypeArr              As Variant
                                    Dim swEnt                       As SldWorks.Entity
                                    Dim swComp                      As SldWorks.Component
                                    Dim swCompModel                 As SldWorks.ModelDoc
                                    Dim i                           As Long
                                    Dim bRet                        As Boolean
                                    Dim ret                         As Long
                                    Dim boolstatus                  As Boolean
                                   
                                    Set swApp = Application.SldWorks
                                    Set swModel = swApp.ActiveDoc
                                    Set swDraw = swModel
                                   
                                    Set swView = swDraw.GetFirstView
                                    Set swView = swView.GetNextView
                                       
                                    While Not swView Is Nothing
                                        Debug.Print "-------------------"
                                        Debug.Print swView.Name
                                       
                                        Set swNote = swView.GetFirstNote
                                        While Not swNote Is Nothing
                                        Set swAnn = swNote.GetAnnotation
                                           
                                            Debug.Assert swNote.IsBomBalloon
                                           
                                            vAttEntArr = swAnn.GetAttachedEntities2: If IsEmpty(vAttEntArr) Then Exit Sub
                                            vAttEntTypeArr = swAnn.GetAttachedEntityTypes
                                           
                                            Debug.Assert UBound(vAttEntArr) = UBound(vAttEntTypeArr)
                                
                                            For i = 0 To UBound(vAttEntArr)
                                
                                                If swSelNOTHING <> vAttEntTypeArr(i) Then
                                                    Set swEnt = vAttEntArr(i)
                                                    Set swComp = swEnt.GetComponent
                                                    Set swCompModel = swComp.GetModelDoc
                                                    Set modelDocExt = swCompModel.Extension
                                                    ret = modelDocExt.ToolboxPartType
                                                   
                                                    If ret <> 0 And swNote.GetBalloonStyle <> 10 Then
                                                   
                                                        Debug.Print "File = " & swModel.GetPathName
                                                        Debug.Print "  Name                 = " & swAnn.GetName
                                                        Debug.Print "    Is stacked         = " & swNote.IsStackedBalloon
                                                        Debug.Print "    Is stacked master  = " & swNote.IsStackedBalloonMaster
                                                        Debug.Print "    AttEntType         = " & vAttEntTypeArr(i)
                                                        Debug.Print "    Balloon style      = " & swNote.GetBalloonStyle
                                                        Debug.Print "    Toolbox Part       = " & ret
                                                       
                                '                        Dim Part As Object
                                '                        Dim longstatus As Long, longwarnings As Long
                                '
                                '                        Set Part = swApp.ActiveDoc
                                '                        boolstatus = Part.Extension.SelectByID2("DetailItem561@Drawing View4", "NOTE", 0.330553225698155, 0.435615531289275, 0, False, 0, Nothing, 0)
                                '                        Set swNote = Part.SelectionManager.GetSelectedObject3(1)
                                '                        boolstatus = Part.Extension.SelectByRay(0.271848815289342, 0.448482251378878, 3.97671893132383E-02, 0, 0, -1, 5.46835603808116E-04, 2, False, 0, 0)
                                                       
                                                        Dim myBalloonStack      As Object
                                                        Dim swNote2             As Object
                                                       
                                                        If Not swNote Is Nothing Then
                                                            Set myBalloonStack = swNote.GetBalloonStack()
                                                            swEnt.Select4 False, Nothing
                                                            Set swNote2 = myBalloonStack.AddTo(swBalloonTextContent_e.swBalloonTextCustom, "Description", 1, "")
                                                            swNote2.SetBomBalloonText 1, "$PRPMODEL:""Description""", 1, ""
                                                            boolstatus = swNote2.SetBalloon(swBalloonStyle_e.swBS_Underline, swBalloonFit_e.swBF_Tightest)
                                                        End If
                                                    End If
                                                End If
                                            Next i
                                               
                                        Set swNote = swNote.GetNext
                                
                                        Wend
                                           
                                    Set swView = swView.GetNextView
                                
                                    Wend
                                   
                                End Sub
                                
                                  • Re: VBA - Stacked Balloons for Toolbox Items
                                    Cad Admin

                                    Sorry Josh,

                                     

                                    My SW crashed and must not have saved the second "swEnt.Select4 False, Nothing" line.  And when i reopen everything i didn't notice it was missing.

                                     

                                    Everything works if; swNote.IsStackedBalloon & swNote.IsStackedBalloonMaster return TRUE.  However if they return FALSE, the code fails. My guess is i have to change the normal balloon to a stacked one.   Ive been looking through the help & web, to know avail.

                                     

                                    How do you switch a normal balloon to be a stacked via VBA.

                                      • Re: VBA - Stacked Balloons for Toolbox Items
                                        Josh Brady

                                        I don't see a way through API to change from regular balloon to stacked.  This might be something to kick to your VAR or to apisupport.  One thing that would probably be possible in the meantime would be to delete the single balloon and insert a stacked balloon in its place.  You'd have to get both its attached entity, its attachment point, and its position to directly replace it.

                                          • Re: VBA - Stacked Balloons for Toolbox Items
                                            Cad Admin

                                            Thanks for all the help Josh,

                                             

                                            You got me through the first hurdle but with all races there is another...more often then not i will need to "swap" out the balloon.  I added the code to retrieve the balloon position(GetPosition) and the balloon attach position(GetAttachPos).  Just now need to figure out how to add a stackedmaster balloon using the coordinates.

                                            • Re: VBA - Stacked Balloons for Toolbox Items
                                              Peter Brinkhuis

                                              I recently tried (manually) to add balloons to a single one and that also didn't work. So I assume you won't be able to make a stacked balloon from a single balloon via the API either.

                                                • Re: VBA - Stacked Balloons for Toolbox Items
                                                  Josh Brady

                                                  Not sure why it didn't work for you.  You can certainly transform a non-stacked balloon into a stacked balloon manually just by right-clicking and choosing "add to stack".  You do have to then click on some component to create the second balloon in the stack, but you can then delete it if you want a single "stacked" balloon.

                                                    • Re: VBA - Stacked Balloons for Toolbox Items
                                                      Peter Brinkhuis

                                                      Yup, you're right Just checked it in 2015 and 2017 and it can be done in both. So either I somehow remember if from an even earlier version (not very likely), my memory is wrong or I didn't expand the right click menu properly (both very likely ).

                                                      • Re: VBA - Stacked Balloons for Toolbox Items
                                                        Cad Admin

                                                        Josh,

                                                        I know you can add to stack manually, was looking to due it via VBA.

                                                         

                                                        In my case i will almost always be running the macro, and finding "regular" balloons.  Using the above code how would i get the addtostack to work.  I dont know how to transform the first balloon to a "stacked or stacked master"

                                                          • Re: VBA - Stacked Balloons for Toolbox Items
                                                            Josh Brady

                                                            You can use swApp::RunCommand to activate the "add to stack" function.  This is equivalent to clicking "add to stack" in the UI.  However, unfortunately it seems that subsequent programmatic selection of components doesn't actually get recognized by the active "add to stack" command.  I did only try selection by using Entity::Select4 to select the entity that the balloon is attached to.  The entity becomes selected, but the balloon is not added to the stack.  It might work using one of the other selection methods (ID, ray, etc).

                                                              • Re: VBA - Stacked Balloons for Toolbox Items
                                                                Cad Admin

                                                                So currently in my code i already retreive the "Attached Position" & "Balloon Position" coordinates of the balloons i want to stack.  I have other macros similar to 2017 SOLIDWORKS API Help - Add Balloon to Stacked Balloon Example (VBA) .  My question is it possible to pass the coordinates from the "original" balloon, to the new one. 

                                                                 

                                                                So it would be:

                                                                1. scan drawing
                                                                2. find qualifying balloon
                                                                3. retrieve coordinates of attachment & balloon location
                                                                4. delete old balloon
                                                                5. add new balloon using code similar to:  2017 SOLIDWORKS API Help - Add Balloon to Stacked Balloon Example (VBA) using the retrieved coordinates from the deleted balloon.

                                                                 

                                                                Do'able?

                                                                  • Re: VBA - Stacked Balloons for Toolbox Items
                                                                    Josh Brady

                                                                    Should be possible.  I believe in you!

                                                                      • Re: VBA - Stacked Balloons for Toolbox Items
                                                                        Cad Admin

                                                                        So i was playing around with a recorded macro and IT seemed to automatically turn a regular balloon into a stacked when adding to it...

                                                                         

                                                                        Dim swApp As Object

                                                                         

                                                                        Dim Part As Object

                                                                        Dim boolstatus As Boolean

                                                                        Dim longstatus As Long, longwarnings As Long

                                                                         

                                                                        Sub main()

                                                                          

                                                                            Set swApp = Application.SldWorks

                                                                          

                                                                            Set Part = swApp.ActiveDoc

                                                                            boolstatus = Part.ActivateView("Drawing View1")

                                                                            boolstatus = Part.Extension.SelectByID2("DetailItem580@Drawing View1", "NOTE", 0.284055246222872, 0.319120716993363, 0, False, 0, Nothing, 0)

                                                                            Dim myNote As Object

                                                                            Set myNote = Part.SelectionManager.GetSelectedObject3(1)

                                                                            boolstatus = Part.Extension.SelectByRay(0.251451232072722, 0.284761102081282, -1.86754490005114E-03, 0, 0, -1, 8.52720370080842E-04, 2, False, 0, 0)

                                                                            Dim myBalloonStack As Object

                                                                            Dim myNote2 As Object

                                                                            If Not myNote Is Nothing Then

                                                                                Set myBalloonStack = myNote.GetBalloonStack()

                                                                                Set swNote2 = myBalloonStack.AddTo(swBalloonTextContent_e.swBalloonTextCustom, "Description", 1, "")

                                                                                swNote2.SetBomBalloonText 1, "$PRPMODEL:""Description""", 1, ""

                                                                                boolstatus = swNote2.SetBalloon(swBalloonStyle_e.swBS_Underline, swBalloonFit_e.swBF_Tightest)

                                                                            End If

                                                                        End Sub

                                                                         

                                                                         

                                                                        My current macro trips debug IF the balloon is NOT stacked already, if it IS a stacked balloon the macro runs fine, what the difference in the recorded one and my macro I'm using?  the only difference i see is selection...

                                                                        Error is the standard "Object variable or with block variable not set"

                                                                    • Re: VBA - Stacked Balloons for Toolbox Items
                                                                      Koos Kubus

                                                                      Thanks Josh, for your code and suggestion to use RunCommand.

                                                                      To implement RunCommand, I replaced lines 76-80 of your code by the following.

                                                                       

                                                                      Dim AttachPosition As Variant
                                                                      Dim StackCount As Long
                                                                      Dim StackArray As Variant
                                                                      
                                                                      AttachPosition = swNote.GetAttachPos 'Get the attachment point of the current note
                                                                      swAnn.Select3 True, Nothing 'Select the current note
                                                                      
                                                                      swApp.RunCommand swCommands_Resume_Stacking_Balloons, "" 'RMB -> Add to Stack
                                                                      If vAttEntTypeArr(i) = swSelFACES Then    'Determine if the note is attached to a face or to an edge
                                                                          swModel.Extension.SelectByID2 "", "FACE", AttachPosition(0), AttachPosition(1), AttachPosition(2), False, 0, Nothing, Empty
                                                                      ElseIf vAttEntTypeArr(i) = swSelEDGES Then
                                                                          swModel.Extension.SelectByID2 "", "EDGE", AttachPosition(0), AttachPosition(1), AttachPosition(2), False, 0, Nothing, Empty
                                                                      End If
                                                                      swApp.RunCommand swCommands_PmOK, "" 'Click okay in the Propertymanager
                                                                      
                                                                      Set myBalloonStack = swNote.GetBalloonStack 'Get the balloonstack, to change the note that has just been added
                                                                      If Not myBalloonStack Is Nothing Then
                                                                          StackCount = myBalloonStack.Count
                                                                          StackArray = myBalloonStack.Stack
                                                                          Set swNote2 = StackArray(StackCount - 1)
                                                                          swNote2.SetBomBalloonText 1, "$PRPMODEL:""Description""", 1, ""
                                                                          swNote2.SetBalloon swBalloonStyle_e.swBS_Underline, swBalloonFit_e.swBF_Tightest
                                                                      End If
                                                                      
                                                                      
                                                                      
                                                                      
                                                                      
                                                                      
                                                                      
                                                                      
                                                                      
                                                                      
                                                                • Re: VBA - Stacked Balloons for Toolbox Items
                                                                  Cad Admin

                                                                  Peter,

                                                                   

                                                                  I haven't found a way to add balloons to a single one either.

                                                                   

                                                                  I do have a macro to add a new stackedballoon to a selected detail on a drawing.

                                                                   

                                                                  I find it quirky that i can select a "regular" balloon and use addtostack, and it changes the balloon properties (or swaps it out, who knows) but do not know what is going on behind the scene.

                                                                   

                                                                  If i wasn't trying to automate some drawing updates to a new standard it wouldn't be an issue, I'm just 95% sure most of the balloons that would need to be updated with the stacked balloon, will be of the "regular" variety.

                                                            • Re: VBA - Stacked Balloons for Toolbox Items
                                                              Yong Ning

                                                              ?????

                                                              ret = modelDocExt.ToolboxPartType

                                                               

                                                              Toolbox.jpg