All Forums
 Категория Visio
 Форум Вопросы и ответы
 Вопрос новичка в этом деле
Author Previous Topic Topic Next Topic  

sWap

2 Posts

Posted - 09/19/2006 :  00:12:37
Приветстую.
Писал на всём - теперь пришлось на VBA
Господа такой вопрос
Как на этом языке под Визио взять все элементы на странице, линии там.. соединяющие произвольные блоки, у блоков свои какие-то как я понял кастомные свойства.
Тоесть как мне получить коллекцию всего на странице и как прошерстить её?
Прошу заранее прощения за подобный простой вопрос, но просто с ВБА работать надо быстро, а вижу его в первый раз.

Есть тут что-нить типа рефлекшена, чтоб если разнородные элементы лежат просто пробежать по их пропертям и всё как бы воспроизвести в памяти.
просто смысл такой, что что-то типа сохранения структуры в базу надо реализовать. И потом сответственно восстановление из базы на другую страницу

Tumanov

Russia
1198 Posts

Posted - 09/19/2006 :  07:41:52
Блоки, линии и все прочее обзываются одним словом - шейп (Shape).
Все элементы на странице - это коллекция шейпов (Shapes). В ней - все. Если отталкиваться от активной страницы, то первый элемент коллекции выглядит как ActivePage.Shapes(1)
А дальше надо смотреть свойства шейпов.
Go to Top of Page

brace

Russia
358 Posts

Posted - 09/19/2006 :  09:23:31
визио умеет сбрасывать инфу в БД через ODBC (Open DataBase Connectivity) но любимая БД у визио это ACCESS делайте так
Tools > Add-Ons >Visio Extras > Database Export Wizard


Go to Top of Page

sWap

2 Posts

Posted - 09/19/2006 :  14:18:06
А как достать "все" свойства у шейпа.
Что-то типа рефлекшена?
Go to Top of Page

brace

Russia
358 Posts

Posted - 09/19/2006 :  15:35:02

все свойства всех шейпов в одну таблицу !!! есть штатное средство
Tools > Reports
можно и через VBA но это не мой профиль.
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 09/19/2006 :  18:28:31
У каждого шейпа есть большая таблица - ShapeSheet. Она порублена на секции, строки, ячейки. В этой таблице описаны все свойства и все поведение шейпа.
Добираться к ячейкам можно либо через индексы (секции, строки, ячейки) либо по именам ячеек.
Например, ActivePage.Shapes(1).Cells("Width") даст ширину первого шейпа на активной странице.
Некоторые свойства можно добыть и проще, именно как свойство объекта Shape, но таких мало. А через ячейки ShapeSheet доступно все. Так что изучайте ShapeSheet.
Go to Top of Page
  Previous Topic Topic Next Topic  
Данный сайт является архивом форума visio.artberg.ru, который был закрыт в связи с переходом на новую платформу visio.getbb.ru
Все материалы доступны только для чтения! Если у вас появились вопросы, или вы хотите что-то обсудить, связанное с Visio, обращайтесь на новый форум!
Архив был создан благодаря совместным усилиям Генадия Туманова @Tumanov (visio.artberg.ru), Александра ака @Surrogate (visio.getbb.ru), и Николая Белых @nbelyh (unmanagedvisio.com)