Disabling Page Layout View

Chris notes that Excel supports both Normal and Page Layout views. He wonders if there is a way to disable Page Layout view so the user of a workbook cannot select it.

Excel makes these two views (Normal and Page Layout) available from the View tab of the ribbon. One might think that the solution is to simply modify the user interface so that the Page Layout tool is no longer available on the ribbon. This, unfortunately, is easier said than done.

If you are using Excel 2007, the user interface is notoriously hard to change. It requires writing XML code and making sure that the code is executed every time the workbook is opened. If you like notoriously hard things, you can find a bit about how to start at this page:

http://msdn.microsoft.com/en-us/library/aa338202.aspx

If you are using Excel 2010 modifying the user interface is a bit easier. You can do it by following these steps:

  1. Click the File tab and then click Options. Excel displays the Excel Options dialog box.
  2. At the left side of the dialog box click Customize Ribbon. (See Figure 1.)
  3. Figure 1. The Excel Options dialog box.

  4. In the right column of the dialog box, click the small plus sign at the left of the View tab entry. Excel shows you the options that are under the View tab.
  5. Click once on the Workbook Views option.
  6. Click the Remove button.
  7. Click OK.

That’s it. Now, if you go look at the View tab, you’ll notice that the user can no longer switch to Page Layout view. In fact, the user cannot pick any view other than whatever view you happen to be in at the current time. This change affects only the current machine, for all workbooks, and cannot be tied to any particular workbook. (The reason is that while you can modify the ribbons a bit in Excel 2010, you cannot modify them in macros. Big pain, and you need to go back to writing XML code like in Excel 2007.)

Perhaps a better solution is to create a small macro that will always make sure that the worksheet is always being displayed in Normal view. This is easy to do; just right-click on a worksheet tab and choose View Code from the resulting Context menu. In the code window, enter the following:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    ActiveWindow.View = xlNormalView
End Sub

This code causes Excel to switch to Normal view every time someone changes what is selected on the screen. Someone could use the tools on the View tab of the ribbon to switch to Page Layout view, but as soon as they select a different cell the macro kicks in and switches back to Normal view.