Whilst the east coast of America has been battered by hurricane Sandy from the Atlantic (my commiserations), Microsoft have been hosting the //Build/ conference in the Pacific North West (specifically Redmond). I have been watching some of the overly fed attendees whoop with joy as they got given 100 Gb SkyDrive account, a Microsoft Surface and a Nokia Lumia 920 each. Yes, I felt jealous, but it would have cost me much more than their combined cost to get out there, so I stuck my head-phones into my large laptop and watched from the comfort of my living room. The reality of the devastation caused by nature can easily overwhelm the storm of technological advances that have been recently announced, but I am genuinely excited by Windows 8, SharePoint 2013, Office 2013 and, of course, Visio 2013.
[Read more…] about US Election Special – Vector Visio 2013 IconsShape Design
Adding More Smartness to Visio Connectors
Whenever I have been asked why I like Visio so much, I have usually cited its ability to connect shapes together; its ability to link to data; and its programmability. Visio 2010 formally added a structured diagram concept and API, and the premium edition introduced diagram validation. So many different types of Visio diagrams require elements to be connected together correctly, and I often have to add a little extra into the connectors to make them smarter.
What is a connector?
A connector is a Visio shape that has 1-D behavior. The most used example is the Dynamic connector shape, which not only connects elements together, but can also re-route itself according to the layout and routing options selected for a page.
[Read more…] about Adding More Smartness to Visio ConnectorsA Visio Logic Gate with Logic
I was recently asked how I would approach improving the Logic Gate 2 in the Circuits and Logic template, on the Analog and Digital Logic stencil. Well, this had resonance with me because I had often wondered why these shapes were not smarter than they are, so I looked more deeply into the shape construction to see how the Logic Gate 2 shape works, and how it could be improved so that the values of the inputs could be set and the logic applied to provide the correct output value. Eventually, similar improvements can be applied to all of the master shapes so that the connected logic diagram responds to input value changes.
The Existing Shape
The Logic Gate 2 shape has Shape Data rows to provide some configuration. Firstly, you can change the number of inputs from 2 to 5, and the number of outputs from 1 to 3:
[Read more…] about A Visio Logic Gate with LogicAssigning Shape Layers from a List in Visio
A Visio user recently asked if it is possible to assign shapes to layers from a list. In his case, he has an Excel table which he has exported shapes and their text using Visio’s Shape Reports feature, to which he has added a column named Layer, and he wants to assign the shapes to these layers. In this article, I demonstrate how this can be done.
I decided to use my MVP Session Wheel diagram ( see http://blog.bvisual.net/2012/06/29/mvp-sessions-wheel/ ) for this example because it already has some layers assigned.
I created a new Shape Report called Presenter Shapes, where I filtered all shapes on the current page to those where the Presenter Shape Data row exists, and the Presenter actually has a value:
[Read more…] about Assigning Shape Layers from a List in Visio
Checking a Visio Shape for Cell Errors
I have been analysing a client’s Visio shapes recently to find out how to increase their performance. These shapes have numerous cells with ShapeSheet functions that reference other cells in the same shape, in parent shapes, in the page and in the document. I suspected that there may be some formulas producing erroneous results, so I wanted to write a macro to check if there are any cell formula evaluation errors in the shape, or its sub-shapes.
A Visio Cell object has an Error property that returns the error code generated by the last evaluation of the result. See http://msdn.microsoft.com/en-us/library/office/ff767327.aspx for more information about the the Error property, and http://msdn.microsoft.com/en-us/library/office/ff766442.aspx for the VisCellError constants.
In order to test a macro that can check a shape for errors, I fist needed to generate examples of each possible error in a shape. So, I created a User-defined Cells section with seven rows – one for each possible VisCellError code value.
I was able to generate errors in all rows, except for the VisErrorName row. No matter how hard I tried, I could not get Visio to generate this error. I am fairly certain that I could generate errors (accidently) before Visio 2010, but I think that Microsoft have made this error much rarer because of the way they substitute last known values when a referenced cell or row is deleted.
So, now that I had a shape with errors, I then duplicated it, and made the duplicate copy part of a grouped shape. This way I could test my function, CheckForErrors(), which simply iterates through all of the selected shapes, and their sub-shapes, and prints out any cells with errors into the Immediate Window:
My macro printed out the following table:
So, I can now check any shape to see if it has any cell errors within it.
The VBA code that produced the listing is :
Public Sub CheckForErrors() Dim shp As Visio.Shape Debug.Print Now() Debug.Print "Parent.Name", "Shape.Name", "Section", "Row", "Column", "Name", "Error", "Formula" For Each shp In Visio.ActiveWindow.Selection CheckShapeForErrors shp Next End Sub Private Sub CheckShapeForErrors(ByVal shp As Visio.Shape) Dim shpSub As Visio.Shape Dim iSect As Integer Dim iCol As Integer Dim iRow As Integer Dim cel As Visio.Cell For iSect = visSectionFirst + 1 To Visio.visSectionLast For iRow = 0 To shp.RowCount(iSect) - 1 For iCol = 0 To shp.RowsCellCount(iSect, iRow) - 1 Set cel = shp.CellsSRC(iSect, iRow, iCol) If cel.Error <> VisCellError.visErrorSuccess Then Debug.Print cel.Shape.Parent.Name, cel.Shape.Name, iSect, iRow, iCol, cel.Name, cel.Error, cel.Formula End If Next iCol Next iRow Next iSect For Each shpSub In shp.Shapes CheckShapeForErrors shpSub Next End Sub
I would be interested to find out of anyone who can create a VisErrorName for me!
Does Adobe Acrobat make better PDF files from Visio?
An export to PDF utility was freely available for Visio 2007, and was built in to Visio 2010. However, I have always been disappointed by the lack of support for Visio layers, Shape Data and multiple hyperlinks per shape in the PDF output. Microsoft have always told me that this is because they have limited control over the public PDF format, as opposed to the proprietary Adobe PDF format (These features are also surprisingly missing from the export to XPS tool, even though this format originated from Microsoft). So, the question is, does Adobe Acrobat make better PDF files from Visio than Microsoft’s free tool?
[Read more…] about Does Adobe Acrobat make better PDF files from Visio?