> For the complete documentation index, see [llms.txt](https://visio-tricks.gitbook.io/workspace/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://visio-tricks.gitbook.io/workspace/obektnaya-model-visio.md).

# Объектная модель Visio

### Описание

Объектная модель любого приложения представляет собой иерархическую структуру взаимосвязей компонентов (объектов) внутри приложения.&#x20;

### Справочная информация по объектной модели

Официальная [справочная информация по объектной модели MS Visio](https://docs.microsoft.com/en-us/office/vba/api/overview/visio/object-model) доступна на платформе [docs.microsoft.com](https://docs.microsoft.com/).

В левой части окна данного справочника вы можете выбрать интересующий вас объект чтобы посмотреть его описание, относящиеся к компоненту [события](https://docs.microsoft.com/ru-ru/office/vba/language/reference/events-visual-basic-for-applications), [свойства](https://docs.microsoft.com/ru-ru/office/vba/language/glossary/vbe-glossary#property) и [методы](https://docs.microsoft.com/ru-ru/office/vba/language/glossary/vbe-glossary#method).

![Рис. 1 - Интерфейс справочника объектной модели на сайте Microsoft](/files/xJOkwFfycnUnzcPoepUW)

### Окно Object Browser

Также содержимое объектной модели можно увидеть в диалоговом окне **Object Browser**, в редакторе VBA.

![ Рис. 2 - Внешний вид окна Object Browser](/files/usyuPa5a37IjKvJNL3QG)

В окне **Object Browser** вы можете просмотреть содержимое библиотеки объектов и сведения о выбранных объектах.

Отображает [классы](https://docs.microsoft.com/ru-ru/office/vba/language/glossary/vbe-glossary#class), свойства, методы, события и [константы](https://docs.microsoft.com/ru-ru/office/vba/api/visio\(enumerations\)), доступные в [библиотеках объектов](https://docs.microsoft.com/ru-ru/office/vba/language/glossary/vbe-glossary#object-library), и [процедуры](https://docs.microsoft.com/ru-ru/office/vba/language/glossary/vbe-glossary#procedure) в проекте. Может использоваться для поиска и использования создаваемых вами объектов и объектов из других приложений.

[Описание интерфейса окна **Object Browser**](https://docs.microsoft.com/ru-ru/office/vba/language/reference/user-interface-help/object-browser) (правда для MS Word, т.к. для MS Visio подобного описания нет).

### Окно Locals

Для понимания взаимосвязей объектов в MS Visio может быть полезно применение окна локальных переменных - **Locals**, в редакторе VBA.

![Рис. 3 - Внешний вид окна Locals](/files/Kn5NoaB9lmqoHqut1AdZ)

Основное назначение окна **Locals** отображать текущие значения всех объявленных переменных проекта. Если щелкнуть по знаку ![](/files/A5Y4jDwKjxEEGoRfSdwy) левее имени одной из переменных, то развернется древовидная структура свойств данного объекта. С помощью этой структуры можно определить объекты, которые располагаются в иерархии уровнем ниже или выше объекта, соответствующего текущей переменной.

[Описание окна локальных переменных](https://docs.microsoft.com/ru-ru/office/vba/language/reference/user-interface-help/locals-window) на официальном сайте.

### Схемы объектной модели

Классический вид объектной модели Visio представлен на рисунке 4.&#x20;

{% embed url="<https://documentation.help/MS-Visio-Developer-Reference/OMD_online_Vis10.gif>" %}
Рис. 4 - Microsoft Visio 2002 Developer Reference ([оригинал](https://documentation.help/MS-Visio-Developer-Reference/object.html))
{% endembed %}

{% embed url="<https://surrogate-tm.github.io/helpful/VisioObjectModel/Sources.html#classic>" %}
↑ Классическая схема с интерактивными возможностями: щелкните мышью по интересующему вас объекту для перехода↑ к англоязычному справочному материалу по данному объекту
{% endembed %}

Более современный вид объектной модели с отображением контейнеров представлен на рисунке 5.

{% embed url="<http://jheyman.github.io/blog/assets/images/VisioAutoCompute/visio_object_model_subset.png>" %}
Рис. 5 - Представление от jheyman ([оригинал](https://jheyman.github.io/blog/pages/VisioAutoCompute/#visio-object-model--base-concepts))
{% endembed %}

{% hint style="info" %}
Подготовленная лично мной [схема объектной модели (древовидная структура)](https://gist.github.com/Surrogate-TM/182cd0ab8b366516535de90e49b2f79b#file-visioobjectmodel-md) (за основу была взята классическая модель).
{% endhint %}

Приведенные схемы отображают основные компоненты объектной модели.

### Заключение <a href="#conclusion" id="conclusion"></a>

Для более эффективного написания кода вам необходимо представлять себе объекты, свойства, методы, связи и события приложения.&#x20;

К особенностям приложения Visio можно отнести наличие у него среды разработки ShapeSheet (известной русскоязычному пользователю под названием таблица свойств). Сам документ, все его страницы, каждая фигура на странице и некоторые другие объекты обладают собственной таблицей свойств, в которой в параметрической форме описываются свойства данного объекта.&#x20;

Без применения ShapeSheet программно в приложении Visio можно лишь первично добавлять объекты, удалять их, создавать события и изменять настройки самого приложения. Любое изменение свойств фигуры, страницы, документа сопровождается изменением соответствующих ячеек в таблице свойств относящихся к изменяемому параметру.&#x20;

Наибольший эффект от программирования в Visio можно получить при понимании объектной модели и ShapeSheet совместно.

Полезную информацию о таблице свойств вы можете найти на сайте [База знаний ShapeSheet](https://shapesheet-kb.github.io/).
