I have made some small improvements to my visViewer application ( see http://www.visviewer.com/ ), and it will now work with the Microsoft Visio Viewer 2016 edition ( see Download Microsoft Visio 2016 Viewer from Official )[Read more…] about Update to visViewer for reload and Visio document links
Sometimes I get really frustrated with Microsoft. They have a really great data-diagramming product with Visio, which they bought for the largest amount that they had ever paid for an acquisition at the time in 1999, but they have not succeeded in marketing the virtues of visual data to most of the Office community. I have always thought that one of the reasons for that is a misguided belief that you should not be able to make good use of Visio diagrams without purchasing Visio. My evidence for this is the lack of data, and sometimes hyperlinks, that are with each shape in the various outputs such as XPS, PDF, and Save As Web. For me, this is a missed opportunity because each of these formats could include data and multiple hyperlink support for each shape. Indeed, it should have been relatively simple for Microsoft to integrate Visio better with Word, Excel and PowerPoint … and I mean graphics and data, not just dumb pictures.[Read more…] about Announcing visViewer 4th edition … and why I did it
Microsoft Outlook 2007 installs the Microsoft Visio Viewer (vviewer.dll via vpreview.exe) by default, so that native Visio files can be seen in all their glory (almost). In this blog I’ll show that the Visio Viewer actually provides access to the Shape Data (Custom Properties), Hyperlinks, Reviewers Markup and Layers. All this without even having Visio installed!
This is great because multiple page documents can be browsed, panned and zoomed.
However, this presentation of the Microsoft Office Visio previewer hides quite a lot of its functionality of this, so it is difficult to toggle layer and reviewers markup visibility, or to view the shape data/custom properties.
There is an existing web article which demonstrates how to use the Visio Viewer in SharePoint (http://www.wssdemo.com/Pages/visio.aspx), and the same method can be used in a web page. This presentation of the Visio Viewer does enable the user to get the extra functionality, but it does not allow the shape data to be searched, listed or extracted. Neither does it allow you to print easily.
Well, I wrote visViewer as a vb.net wrapper for the Microsoft Visio Viewer 2003 version several years ago, and now I have updated it for the Microsoft Visio Viewer 2007 (see http://www.bvisual.net/Products/visViewer.aspx). The newer version provides access to shapes with shapes, just as the reporting tool full version of Visio was enhanced to provide access to shapes within shapes. This time I have released it as shareware, so feel free to try it, and, if you like it and use it commercially, you may wish to donate towards its development.
visViewer demonstrates that all the Shape Data on all of the shapes on each page in the Visio document are visible to code. The main principle is that the CurrentPageIndex of the Viewer control needs to be set to an integer number up to the PageCount before the shapes can be read. For example the following block of code shows how you can
With Me.AxViewer1 .CurrentPageIndex = n For lShape As Integer = 1 To .ShapeCount ‘You can use .get_ShapeName(lShape) For lProperty As Integer = 1 To .get_CustomPropertyCount(lShape) ‘ You can use .get_CustomPropertyName(lShape, lProperty) ‘ and .get_CustomPropertyValue(lShape, lProperty) Next lProperty For lHyperlink As Integer = 1 To .get_HyperlinkCount(lShape) ‘ You can use .get_HyperlinkAddress(lShape, lHyperlink) Next lProperty Next lShape End With
Once you have read the data inside each shape, then you can provide searching and exporting.
In addition to reading the Shape Data, I also collect the Hyperlinks, and thus it is possible to show multiple hyperlinks on shapes, and to provide the ability to follow them.
One shortcoming of the Visio Viewer is the lack of any method to zoom to a shape in the document. Strangely, there is a method to the shape at any xy co-ordinate (get_ShapeAtPoint), but not one to get the xy co-ordinate of a shape.
Another shortcoming of the Visio Viewer is the lack of printing, but I have been able to partially address this by using the PrintForm method from the Visual Basic Power Packs. However, this only outputs raster, which is never going to be as crisp as vectors.
I decided to use the Microsoft ReportViewer (because it is simple and royalty free) for the reports that provide printing, or export to Excel or Pdf, of the shape data.
Lastly, I provided the ability to open a Visio document from the menu, or by dropping a Visio document on to the Visio Viewer panel, or by opening from Window Explorer (if the msi installation is used rather than the ClickOnce).
I hope that visViewer proves useful to non-Visio and Visio users alike, and hope that it encourages the use of Visio files as a portable data graphic file format.