You can become a Visio master without turning on the developer tab, but if you do, then the real magic happens. It opens the world of the shapesheet and access to the internal structure of Visio.
Visio has two types of sections, the visual sections you find when you “Open Shapesheet” and the real data one when you start programming with CellsSrc(SectionId, RowId, CellId).
To show the document shapesheet, right click the first entry in the Drawing Explorer.
To show the page shapesheet, with nothing selected, right click the page.
To show the shape shapesheet, select a shape and right click the shape.
The term section is taken loosely, with CellsSRC(), section 1 is actually a collection of sections. It is better to consider a section as a combination of section and rows. Both the real data sections and visual sections have a Miscellaneous section, but the real data Miscellaneous section has more cells than the visual one. In fact, not all cells in the real data sections are exposed in a visual section. In fact, some real data Miscellaneous cells are actually exposed in other visual sections like Glue.
So, what is in section 2? Will Visio publish a more complete list of RowTypes()?
The Geometry section (or sections) is a special case. If you come at it from the data side, Geometry sections can have section Ids from 10 to 29. If you come at it from the visual side, it is one section with header information and a collection of subsections, MoveTo, LineTo. Also, unlike other sections, the Geometry sections have different number of columns.
|MoveTo||Move to a coordinate.||2||*||*|
|LineTo||Draw a line to a coordinate.||2||*||*|
|ArcTo||Draw a circular arc to a coordinate.||3||*||*||*|
|EllipticalArcTo||Draw an elliptical arc to a coordinate.||6||*||*||*||*||*||*|
|PolylineTo||Draw a polyline, or consecutive lines, to a coordinate.||3||*||*||*|
|NURBSTo||Draw a non-uniform rational B-spline (NURBS) to a coordinate.||7||*||*||*||*||*||*||*|
|SplineStart||Start a spline.||6||*||*||*||*||*||*|
|SplineKnot||Draw a spline segment to a knot coordinate||3||*||*||*|
|InfiniteLine||Draw an infinite line from one coordinate to another.||4||*||*||*||*|
|Ellipse||Draw an ellipse from a center coordinate and a major/minor axis.||6||*||*||*||*||*||*|
|RelCubBezTo||Draw a cubic Bezier curve relative to the width and height of the shape.||6||*||*||*||*||*||*|
|RelEllipticalArcTo||Draw an elliptical arc to a coordinate relative to the height and width of the shape.||6||*||*||*||*||*||*|
|RelLineTo||Draw a line to a coordinate relative the height and width of a shape.||2||*||*|
|RelMoveTo||Move to a coordinate relative to the width and height of the shape.||2||*||*|
|RelQuadBezTo||Draws a quadratic Bezier curve relative to the width and height of the shape.||4||*||*||*||*|
From the programming side, there is a function called RowType(SectionId,RowId). Though the geometry sections are enumerated, there are a number that are not. So, I updated the list from Graham Wideman’s book to include RowType.
Graham Wideman’s books are a great source of information for those who want to master the magic of Visio. I have created an Excel spreadsheet based on Graham’s book that correlates section id, row id and the cells content. Since Graham’s book has been around for a while additions to Graham’s work are in blue.
Of course, the Visio shapemiesters have to have their fun. Section 248, LineGradientStops is RowType 247, while Section 249 FillGradientStops is RowType 248 and Section 247 is RowType 199. Was that a mistake or are the shapemiesters just messing with us?
The list is in the Download section.
This is a work in progress, I have not explored all the visual sections to see what RowTypes I have yet to discover or determined what other mysteries there are. I will update the download when I find something new.
John… Visio MVP in x-aisle