Home » Code, Power User, Visio 2010, Visio 2013, Visio 2016, Visio Essentials

Turning Pages in Visio

Submitted by on December 12, 2016 – 2:20 am | | 2926 views 3 Comments

« »

visio-turn-pages-thumbFor small documents, turning pages in Visio is pretty straightforward. But when your file grows to be 30 or 60 pages long (yes, people do this in Visio!), some other techniques will make your Visio-document-navigation life a bit simpler.

Page Tab Basics

The basics of turning Pages in Visio hasn’t changed for quite a few versions. At the bottom of a drawing window, you have page tabs, which look very similar to what you are used to for flipping worksheets in Excel. Click a tab, go to a page. It doesn’t get much simpler!

This is how they look in Visio 2010:

visio-turn-pages-page-tabs-close

If you have lots of pages in your Visio document, it starts to get a bit crazy:

visio-turn-pages-page-tabs-far

click to view larger image

In Visio 2013 and Visio 2016, it’s not much different. A bit flatter, a bit less…tabby:

visio-turn-pages-page-tabs-2016

click to view larger image

I said “much different”… Some page-turning controls have disappeared and been replaced over the years. In Visio 2010, you had these VCR/play controls. The let you page-forward, page-backward, and jump all the way to the first or last page:

visio-turn-pages-vcr-controls

Visio 2010 also has a splitter control. This lets you specify what fraction of the drawing window’s width should show page tabs vs. horizontal scrolling control (horizontal panning of the drawing):

visio-turn-pages-tab-splitter

In Visio 2013 and Visio 2016, the VCR/play controls are gone, as is the splitter control. In their place, you have and “All” drop-up menu for jumping directly to pages, and a (+) button for quickly inserting new pages:

visio-turn-pages-all-and-plus

Note that the horizontal scroll bar now occupies the full length of the drawing window, as do the page tabs.

One weird side effect of this cleaner UI is that there is no obvious way to scroll the range of visible page tabs–something that VCR/play control allowed you to do. Instead, as page tabs disappear off the left or right edge of the page-tab display, you simply click slightly to the left of the left-most tab, or slightly right of the right-most tab, and Visio scrolls more tabs into view. The “All” button helps make up for the lack of the VCR/play control, because it gives you a scrolling (if needed) list of every page in the document.

If you have lots of pages, and they have very long names, and you switch pages a lot, then fiddling with the UI controls will likely drive you nuts–regardless of whether you are using Visio 2010 or Visio 2013/2016. If you are switching pages often, a better workflow will be required. So let’s look at some alternatives that will expand your Visio tool set.

Page Turning for Power Users

As mentioned above, extreme Visio usage could lead to struggles with the basic page navigation controls in Visio. But, as is typical Visio, there are many roads that lead to the goal. I’m sure some of you will be interested in these advanced features that are sure to save you valuable time!

Keyboard Shortcuts for Page-Forward and Page-Backward

First, why waste time mousing around when you can commit a few keyboard shortcuts to memory?

I’ve found these key combinations to be helpful for getting around a document:

[Ctrl] + [PgUp] = Page Backward

[Ctrl] + [PgDn] = Page Forward

[Shift] + [F4] =  Select Page pop-up dialog (more on this below)

If you are fortunate to own an IBM Lenovo ThinkPad laptop, then you might have these special, fantastic keys:

visio-turn-pages-thinkpad-keys-2

Nestled amongst the arrow keys are dedicated, built-in page-forward and page-backward keys. They work with Visio just as well as with web browsers. Some people love them, others hate them. I loved them, but my shiny-new ThinkPad X1 Yoga no longer has them. They have been replaced by PgUp and PgDn keys, which used to be separate keys in the top-right corner of the ThinkPad layout.

I have not discovered any keyboard shortcuts for jumping to the first and last page of a document, however. This would be really useful in the later versions of Visio, since the VCR/play controls have been removed. If you know of any secret key combinations, be sure to leave a comment below!

I’d also like to make a quick shout out/thank you to: Killer Keys for showing me that [Shift] + [F4] keyboard shortcut! I couldn’t find it anywhere on my own!

Pop-up Page Lists

In Visio 2010, you can right-click the VCR/play controls and get a quick, partial-listing of your pages. It is limited to only showing the first 9 pages, but it will display around 36 characters, which is pretty helpful for documents that have very long page names. (And I have seen customer documents with not only lots of pages, but very long page names!)

This is what it looks like in Visio 2010:

visio-turn-pages-more-pages-list

The page you are currently on will have a check next to it (not shown above). If you’ve got more than 9 pages in your document, there is a More Pages… item at the end of the menu, which pops up the Select Page dialog:

visio-turn-pages-select-pages-dialog-2This dialog is also available in Visio 2013 and Visio 2016. When you really can’t remember where a page is in a document, or your eyes are going bleary looking at page tabs, and laboriously scrolling through them, then this dialog is a godsend! Note that the page you are on is grayed out, in case you can’t see or read the current page’s tab for some reason.

I haven’t seen a way to get to it via the built-in user interface, but that [Shift] + [F4] keyboard shortcut mentioned above works in Visio 2010, 2013, and 2016. Also, you can find the command to bring up this dialog in the lists for customizing the Ribbon or Quick Access Toolbar. Just pick All Commands, then look for the Page… item:

visio-turn-pages-customize-select-pages

In Visio 2013 and 2016, you have the [All] button to the right of the page tabs. Using this control involves a normal-click, not a harder to find right-click operation. Also, the list that shows up displays every page in the document. This is an improvement over the pop-up list that Visio 2010 offered. Note that the list has a maximum length, but a scroll bar will appear as needed, so you will have access to every page.

visio-turn-pages-all-list

The current page is conveniently in blue/bold–a nice visual touch. For keyboard fans, you can invoke this pop-up list with [Alt] + [F3] , then navigate to the page you want using arrow keys and Enter

Page Turning Errata

Hopefully the information heretofore will help you to jump around your documents more quickly. But there are lots of other concepts that could be of use. To keep this article under 15,000 pages, I’ll just quickly mention some document-navigation-related tips, ideas and hints that may spur you to further explore Visio or to employ other navigation ideas in your workflow.

Hyperlinks

It might be that the places you need to jump to are directly related to the pages you happen to be viewing. In that case, it might make sense to set up some hyperlinks. In effect, you are creating your own custom page-navigation user-interface! The drawback is that shapes get bigger or smaller when you zoom in/out, and they can easily be off-screen if you’ve panned the view away from them.

  1. Shapes can have more than one hyperlink (you right-click the shape, then choose the specific link to follow)
  2. You can set up a shape so that double-clicking it will follow the hyperlink. Goto: Developer tab > Shape Design group > Behavior button > Double-click tab > Go to page drop-down list.
  3. Pages can have multiple hyperlinks, but you’ll need to use the ShapeSheet to implement them. When a page has a hyperlink, just right-click the page to follow any of the available hyperlinks. Inside the ShapeSheet, in the Hyperlinks section, which you must manually add, set the SubAddress cell, to e.g. “Page-22”, or the more robust and verbose formula: Pages[Page-22]!ThePage!PAGENAME(). The mouse cursor will display the hyperlink-pointer over any blank areas on the page, but switch to the normal pointer over shapes that have no links.

If you use shapes for navigating, you might want to come up with some visual conventions in your documents, so that users know that a shape has hyperlinks, or is specifically meant to help with page navigation. Sure, the cursor changes when you mouse over shapes with links, but not every user will carefully mouse over shapes and observe the cursor. So give the shapes a red border, or format them to look like fake buttons. If you’ve set up double-clicking to link, add two asterisks after the text to suggest a double-click. Or Insert a shape ScreenTip that says “Double-click me to jump to the page indicated in the shape’s text.”  or something equally informative.

Multiple Windows

Visio is not only an MDI (multiple document interface) application, but you can also have multiple windows pointing to the same document. If you’ve got a monster monitor, check out the View Ribbon tab, which offers buttons for adding new windows, and arranging the ones that are already open. You’ll have the same page tabs in each window, but you might not need to jump around so much if you’ve got 2, 3 or 4 important pages open already!

Note these window-related keyboard shortcuts:

[Shift] + [F7] = Arrange all open windows in vertical strips, next to each other.

[Ctrl] + [Shift] + [F7] = Arrange all open windows in horizontal strips, above and below each other.

[Ctrl] + [F4] = Close the current window within Visio’s main application window.

Code

If you are a programming nerd, or you are working on a custom Visio solution, a few snippets might be of interest to you.

You can programmatically invoke the Select Page dialog using these two, equivalent VBA statements:

1
2
  Call Visio.Application.DoCmd(1077)
  Call Visio.Application.DoCmd(Visio.VisUICmds.visCmdOptionsGoToDrawing)
  Call Visio.Application.DoCmd(1077)
  Call Visio.Application.DoCmd(Visio.VisUICmds.visCmdOptionsGoToDrawing)

Odd choice of constant names there! Also, if you call this command and the user hits Cancel, you get an error, so put it in a try-catch or other error-handling block to avoid hassling users.

Somewhat related to this is the page-reordering dialog, which you can invoke via

1
2
  Call Visio.Application.DoCmd(Visio.VisUICmds.1795)
  Call Visio.Application.DoCmd(Visio.VisUICmds.visCmdReOrderPage)
  Call Visio.Application.DoCmd(Visio.VisUICmds.1795)
  Call Visio.Application.DoCmd(Visio.VisUICmds.visCmdReOrderPage)

There are also two command ids for turning pages:

1
2
3
4
5
6
7
  '// Page forward:
  Call Visio.Application.DoCmd(Visio.VisUICmds.1148)
  Call Visio.Application.DoCmd(Visio.VisUICmds.visCmdTurnToNextPage)
 
  '// Page backward:
  Call Visio.Application.DoCmd(Visio.VisUICmds.1147)
  Call Visio.Application.DoCmd(Visio.VisUICmds.visCmdTurnToPrevPage)
  '// Page forward:
  Call Visio.Application.DoCmd(Visio.VisUICmds.1148)
  Call Visio.Application.DoCmd(Visio.VisUICmds.visCmdTurnToNextPage)

  '// Page backward:
  Call Visio.Application.DoCmd(Visio.VisUICmds.1147)
  Call Visio.Application.DoCmd(Visio.VisUICmds.visCmdTurnToPrevPage)

If you want to programmatically jump to a page within a document, then you do it by “setting the page object for the current window”. This is an overly-verbose, super-careful bit of code for changing the page shown in the active drawing window:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Option Explicit
 
Public Sub Test_JumpToPage()
  Call ActiveWindowToPage("Page Three")
End Sub
 
Public Sub ActiveWindowToPage(ByVal pageName As String)
 
  '// Get the Active Window object:
  Dim win As Visio.Window
  Set win = Visio.ActiveWindow
  
  '// Test that the active window is actually a drawing
  '// window, and not, say, a ShapeSheet window or something
  '// non-drawing-related:
  If (win Is Nothing) Then GoTo Cleanup:
  If (win.Type <> Visio.VisWinTypes.visDrawing) Then GoTo Cleanup
  
  '// Check that the drawing actually has a page called pageName
  Dim pg As Visio.Page
  
  '// Search pages by Page.Name:
  For Each pg In win.Document.Pages
    If (StrComp(pg.Name, pageName, vbTextCompare) = 0) Then
      win.Page = pageName
      GoTo Cleanup
    End If
  Next pg
  
  '// Search pages by Page.NameU, in case Page.Name
  '// was never found. NameU is the "universal name",
  '// which can reside under localized names for different
  '// countries.
  For Each pg In win.Document.Pages
    If (StrComp(pg.NameU, pageName, vbTextCompare) = 0) Then
      '// Turn to the page by setting the win.Page property
      '// to the page name. Note that we don't do something like
      '// Set win.Page = SomeVisPageObject, we just use text.
      win.Page = pageName
      GoTo Cleanup
    End If
  Next pg
 
Cleanup:
  Set pg = Nothing
  Set win = Nothing
End Sub
Option Explicit

Public Sub Test_JumpToPage()
  Call ActiveWindowToPage("Page Three")
End Sub

Public Sub ActiveWindowToPage(ByVal pageName As String)

  '// Get the Active Window object:
  Dim win As Visio.Window
  Set win = Visio.ActiveWindow
  
  '// Test that the active window is actually a drawing
  '// window, and not, say, a ShapeSheet window or something
  '// non-drawing-related:
  If (win Is Nothing) Then GoTo Cleanup:
  If (win.Type <> Visio.VisWinTypes.visDrawing) Then GoTo Cleanup
  
  '// Check that the drawing actually has a page called pageName
  Dim pg As Visio.Page
  
  '// Search pages by Page.Name:
  For Each pg In win.Document.Pages
    If (StrComp(pg.Name, pageName, vbTextCompare) = 0) Then
      win.Page = pageName
      GoTo Cleanup
    End If
  Next pg
  
  '// Search pages by Page.NameU, in case Page.Name
  '// was never found. NameU is the "universal name",
  '// which can reside under localized names for different
  '// countries.
  For Each pg In win.Document.Pages
    If (StrComp(pg.NameU, pageName, vbTextCompare) = 0) Then
      '// Turn to the page by setting the win.Page property
      '// to the page name. Note that we don't do something like
      '// Set win.Page = SomeVisPageObject, we just use text.
      win.Page = pageName
      GoTo Cleanup
    End If
  Next pg

Cleanup:
  Set pg = Nothing
  Set win = Nothing
End Sub

When you’re ready to distribute a long document, you might want to clean up the zoom levels on all the pages first.

This article highlights code that will flip through every page in a document and set its zoom level to “view fit” (ie: fit the page to the window):

Fit All Pages to Window in a Visio Document

For long documents, this is a pain to do manually, but it is a good idea to do this before distributing a document. It can be disconcerting for novices users to receive a document that has pages zoomed in to 1500%, or zoomed out to 10%. But authors of documents can routinely find themselves zooming to these levels throughout the creation process.

Surface Dial

Watch this space for Microsoft’s latest piece of hardware.

I imagine it will scroll/pan or zoom the active Visio window, but who knows what kind of customization options will be available. Imagine being to page-forward and back with the wheel – depending on your needs, that could be pretty useful and cool!

 

visio-turn-pages-thumb-full

 

 

 

 

3 Comments »

  • Surrogate says:

    Thank you, Chris !
    Great article !!!

  • Miles Thomas says:

    I have seen the ultimate in massive use of hyperlinks with Visio as a publication tool.

    The Oracle Retail Reference (process) model–nearly 900 Visio files (some with multiple tabs in them), all set up for hyperlink drill down/across. Part of a wider reference library which adds about 100 more logical-level architecture diagrams including integration flows (also hyperlinked, some into documents with textual tables)

    Based on a stencil which makes the ability to create the (relative) hyperlinks consistent and easy, aligned to BPMN type notation.

    (Alas this not available for free download, you have to be licensed and paying support to download the zip file which contains the reference library)

    Oracle (Retail) also seem to have developed some automated tooling which they use to convert these Visio diagrams (which are the master) into a website (viewable from local drive or uploadable to Apache/IIS); The hyperlinked converted into hyperlinked jpegs (with a pan and scan viewer for the bigger diagrams).

    This use of Visio replaced use of a well known process/architecture system, to avoid customers having to license an expensive third party product to view/amend the processes.

  • Visio Guy says:

    Thanks for sharing, Mike! 900 Visio files!

    I had a bug once when working on a project that tweaked the text in all of a large telecom company’s Visio files. The bug was that I had used a short integer for looping through files in a directory, but they had directories containing more than 32,767 files! Crazy what people do with this application!

    I’ve written custom utilities for customers to convert a web of hyperlinked Visio diagrams into a web of…web pages.

    The issue is that when you save a Visio diagram “to html”, the links still point to Visio files on your network drives. So it was a big conversion process.

    Being older and wiser, I’m wondering if some clever javascript couldn’t intercept clicks on links to .vsd/.vsdx files, then check or attempt to open an .html/.htm file with the same name first. That would avoid the need for a large conversion process.

Leave a comment!

Add your comment below, or trackback from your own site. You can also subscribe to these comments via RSS.

Be nice. Keep it clean. Stay on topic. No spam.

You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code lang=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre lang="" extra="">

This is a Gravatar-enabled weblog. To get your own globally-recognized-avatar, please register at Gravatar.

*