# Объектная модель 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](https://2224921418-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LbJAmG0fzODwUxqdGj5%2Fuploads%2FzgS5HKklPl1WQttXpxOp%2FObjModelReference.png?alt=media\&token=de226911-8b7f-4d54-afc4-9846c8a0b623)

### Окно Object Browser

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

![ Рис. 2 - Внешний вид окна Object Browser](https://2224921418-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LbJAmG0fzODwUxqdGj5%2Fuploads%2F7dm07rOhAyDVbbkmnKpp%2FVisioObjectBrowser.png?alt=media\&token=b49985bb-6caa-47fc-9b03-aadfd91c347c)

В окне **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](https://2224921418-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LbJAmG0fzODwUxqdGj5%2Fuploads%2FNC3oLGbW25zcdxG8RDa5%2FVisioLocalsWindow.png?alt=media\&token=1a6c9461-8a0b-4de4-9c11-bbc05e15ffa5)

Основное назначение окна **Locals** отображать текущие значения всех объявленных переменных проекта. Если щелкнуть по знаку ![](https://2224921418-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LbJAmG0fzODwUxqdGj5%2Fuploads%2Fxo4PxUKDqrTh9tbEHIBR%2Fplus.png?alt=media\&token=55139481-a6bb-4221-a047-b90359047ccd) левее имени одной из переменных, то развернется древовидная структура свойств данного объекта. С помощью этой структуры можно определить объекты, которые располагаются в иерархии уровнем ниже или выше объекта, соответствующего текущей переменной.

[Описание окна локальных переменных](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/).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://visio-tricks.gitbook.io/workspace/obektnaya-model-visio.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
