Master.Open Method (Visio)
Opens an existing master so that it can be edited.
Version Information
Version Added: Visio 4.1
Syntax
expression .Open
expression A variable that represents a Master object.
Return Value
Master
Remarks
You can use the Open method for a Master object in conjunction with the Close method to reliably edit the shapes and cells of a master. In some previous versions of Visio, you could edit a Master object's shapes and cells, but the changes were not pushed to instances of the master, and alignment box information displayed when instancing the edited master was not correct.
To edit the shapes and cells of a Master object from a program
Open the Master object for editing by using masterObjCopy = masterObj.Open. This code fails if there is a drawing window open into masterObj or if other programs already have masterObj open. If the Open method succeeds, masterObjCopy is a copy of masterObj.
Change any shapes and cells in masterObjCopy, not masterObj.
Close the Master object by using masterObjCopy.Close. The Close method fails if masterObjCopy isn't a Master object that resulted from a prior masterObj.Open call. Otherwise, the Close method merges the changes made in step 2 from masterObjCopy back into masterObj. It also updates all instances of masterObj to reflect the changes and update information cached in masterObj. If masterObj.IconUpdate isn't visManual (0), the Close method updates the icon shown in the stencil window for masterObj to depict an image of masterObjCopy.
If you change the shapes and cells of a master directly, as opposed to opening and closing the master as described in the procedure above, the effects listed in step 3 don't occur.
A program that creates a copy of a masterObj for editing should both close and release the copy. Microsoft Visual Basic typically releases it automatically. However, when you are coding in C or C++, you must explicitly release the copy, just as you would for any other object.
Note
Starting with Microsoft Office Visio 2003, only user-created stencils are editable. By default, Visio stencils are not editable.
Example
This Microsoft Visual Basic for Applications (VBA) macro shows how to open a Master object for editing. It opens a copy of a master from the document stencil and changes the fill foreground color of the master and all shapes in the drawing derived from the master.
Before running this macro, close all open Visio documents. Then, click the File tab, click New, and then click Create to open a new document based on no template. Click the Rectangle tool, and draw a rectangle on the drawing page. Open the document stencil (in the Shapes window, click More Shapes, click Show Document Stencil), and then drag the rectangle shape onto the document stencil to create a master. Finally, drag several copies of the rectangle master onto the drawing page.
Public Sub OpenMaster_Example()
Dim vsoMaster As Visio.Master
Dim vsoMasterCopy As Visio.Master
Dim vsoShape As Visio.Shape
Dim vsoCell As Visio.Cell
Set vsoMaster = Visio.Documents.Masters(1)
Set vsoMasterCopy = vsoMaster.Open
Set vsoShape = vsoMasterCopy.Shapes.Item(1)
Set vsoCell = vsoShape.CellsU("FillForegnd")
vsoCell.Formula = 9
vsoMasterCopy.Close
End Sub