Something New for Visio 2010 – Containers

Have you ever wanted to add an area around a group of shapes? For example, you want to identify a group of computers that belong to the draughting department? Simple, you just draw a shape around a group of shapes, but the problem arises when you want to expand or shrink the shape that encloses the group of shapes.

With Visio 2010, is a new concept called containers that will automatically stretch or shrink depending on the shapes contained.

MSO Shapes and Visio

Though not directly Visio related, I have been playing with converting the MSO shapes used in Word, Excel, PowerPoint and Publisher into Visio shapes. The shapes are similar to Visio shapes and include control handles. So far I have created a Visio stencil for the shapes and have added some of the smarts into the shapes. I have been able to create Visio drawings from MSO shapes in PowerPoint and transfer some of the settings for the shapes. The fun has been getting around the MSO*mixed types. (It basically indicates that you have to go down another path to search for your information)


One thing I noticed is that five of the MSO shapes return the wrong shape type. They are:






















Visio 2010 – Developer Mode

With Office 2007, the main apps introduced the ribbon and with Office 2010, Office introduced the ability to customize the ribbon. Since the ribbon was a major shift in the UI experience, it made sense that  only the key apps should “test the waters” and the other apps should wait till the next release. It was basically a “too many cooks spoil the broth” scenerio.

With Visio 2010, Visio acquired the Ribbon AND ribbon customization.  One problem with menus in Visio 2007 was their placement was not optomized and it was possible to leave gaps. So the introduction of the ribbon meant a better placement of the buttons and only displaying the relevant ones. (Of course, relevancy is subject to interpretation)

With the introduction of the ribbon, there were some major changes in the UI. One noticable one is the removal of the “Use Developer Mode” checkbox in the Options menu. The user can now directly customize the ribbon to enable the buttons that were added by the old “Use Developer Mode” option checkbox.

There is an alternate way to get to code. On the View tab, the last group is Macros. You can then access or create VBA macros.


A recent post in the newsgroups asked about a stencil for IVR. IVR – Interactive Voice Response – is the system we have known to love as the automated telephone system – Press 1 for customer service rep, 2 for sales and so on. A VRU Voice Response Unit is the computer that runs the software.

In a past life I maintained an IVR system for a bank and of course, documented it with Visio. Except for a few specialized shapes, most of the shapes were from the flowchart stencil. With Visio 2007, some of the workflow shapes could have come in handy. So the specialized shapes I used were:

A Decision Box – This box contained the prompt presented the user and ten connection points to the possible responses ( 0 to 9)

A CSR shape – Customer Service Rep (aka operator) This was just a piece of clipart of an operator with a headset. Since this was a common destination when the user pressed 0, it was placed in many places on the flowchart. (I wonder if I can talk Visio Guy into creating one of his people shapes for this?).

A manframe shape – The actual VRU was an OS2 box, but all the data was stored on a mainframe.

A fax machine – One of the features we added was the ability to have your bank statement faxed to your fax machine.

So I will try and put a VRU / IVR stencil together and post it on the Visio MVPS website. If anyone can come up with any additional shapes that would be useful for the stencil, let me know.

Polar Array – Part 2

It has been almost two years since I blogged, so it is time to dust off the blog.

Today in the newsgroups someone asked about using the Polar Array VBA sample from the Visio MVP website, but rather than place a specific shapes multiple times, arrange the shapes that are selected.

As usual, the original credit goes to Chris

Sub PolarArray()
‘ by Chris Roth
Dim shp As Visio.Shape, shpObj As Visio.Shape, celObj As Visio.Cell
Dim iNum As Integer, i As Integer
Dim dRad As Double, dAngStart As Double, dAng As Double
Dim x As Double, y As Double
Dim VsoSelect As Visio.Selection
Dim VsoShape As Visio.Shape

‘ obtain the shape to be distributed
Set shp = Visio.ActiveWindow.Selection(1)

Const PI = 3.14159265358

Set VsoSelect = Visio.ActiveWindow.Selection

If VsoSelect.Count > 1 Then
    iNum = VsoSelect.Count
    dRad = InputBox(“Enter the radius for the polar array in inches:”, “Polar Array”)
    dAngStart = InputBox(“Enter the first angle in degrees (0 deg = 3 o’clock):”, “Polar Array”)
    dAngStart = dAngStart * PI / 180 ‘Convert to radians
    dAng = 2 * PI / iNum
    For i = 1 To iNum
    x = dRad * Cos(dAngStart + dAng * (i – 1)) + 4.25
    y = dRad * Sin(dAngStart + dAng * (i – 1)) + 5.5
    Set VsoShape = VsoSelect(i)
‘    Set shpObj = Visio.ActivePage.Drop(shp, x, y)
    VsoShape.Cells(“Pinx”).Formula = x
    VsoShape.Cells(“piny”).Formula = y
    ‘ rotate the shape – This only makes sense if this is a group of chairs around a table
‘    Set celObj = VsoShape.Cells(“Angle”)
‘    celObj.Formula = Str(Int((i – 1) * 360 / iNum)) + “deg.”
    Next i
Else   ‘ if only one shape is selected, then
    iNum = InputBox(“Enter the number of items in the array:”, “Polar Array”)
    dRad = InputBox(“Enter the radius for the polar array in inches:”, “Polar Array”)
    dAngStart = InputBox(“Enter the first angle in degrees (0 deg = 3 o’clock):”, “Polar Array”)
    dAngStart = dAngStart * PI / 180 ‘Convert to radians
    dAng = 2 * PI / iNum
    For i = 1 To iNum
    x = dRad * Cos(dAngStart + dAng * (i – 1)) + 4.25
    y = dRad * Sin(dAngStart + dAng * (i – 1)) + 5.5
    Set shpObj = Visio.ActivePage.Drop(shp, x, y)
    shpObj.Text = i
    ‘ rotate the shape
    Set celObj = shpObj.Cells(“Angle”)
    celObj.Formula = Str(Int((i – 1) * 360 / iNum)) + “deg.”
    Next i
End If
End Sub