Форум пользователей Visio

Форум по вопросам применения и программирования в Visio
Текущее время: 22 май 2019, 01:40

Часовой пояс: UTC + 3 часа [ Летнее время ]


Правила форума


При размещении файлов предпочтительным является формат vsd (а не vsdx/vsdm)
Размещая ваши вложения на форуме не используйте имена файлов содержащих кириллицу, в противном случае файл будет иметь имя .<расширение файла> !



Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Как добавить строку в секцию User-defined Cells Документа
СообщениеДобавлено: 03 мар 2019, 15:41 
Не в сети
Постоянный участник

Зарегистрирован: 16 окт 2016, 12:41
Сообщений: 59
Использую Visio c: 2016
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Добрый день! В очередной раз прошу подсказки у сообщества. Хочу понять как добавлять свои строки в User-Defined Cells Документа через VBA.
Макрорекордер не очень помог - он выдал что-то такое:
Код:
Application.ActiveWindow.Shape.AddRow visSectionUser, 0, visTagDefault

Из этого кода можно сделать вывод, что есть некий шейп, который олицетворяет документ. И у этого шейпа ID равен 0. Когда я попробовал этот код после макропекордера, то всё работало как надо - строки добавлялись именно к документу. Но решил попробовать на пустом документе (без предварительного макрорекордера). Написал такой же код как и ранее, но в этом случае новые ячейки добавлялись не к Документу, а к странице, хотя шейп был тоже с индексом 0.
И ещё меня смущает, что всё действие идёт через объект Window (ActiveWindow), а не через Document. Смущает, так как макрос будет запускаться из Excel, и оперировать планировал документами, а не окнами, и не очень хочется каждое окно активировать.
Может есть какой-нибудь другой способ добавить пользовательские ячейки к документу?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как добавить строку в секцию User-defined Cells Документа
СообщениеДобавлено: 03 мар 2019, 16:02 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3574
Откуда: оттуда
Использую Visio c: 1998
Отрасль: -
Должность: Information worker
Уровнь квалификации: ShapeSheet, VBA
DocumentSheet, не пробовали?

Дополнено позднее: была ветка похожая


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как добавить строку в секцию User-defined Cells Документа
СообщениеДобавлено: 03 мар 2019, 16:02 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 513
Использую Visio c: 2008
Очков репутации: 105

Добавить очки репутацииУменьшить очки репутации
Типа так:

Код:
Sub Macro1()

With ActiveDocument

'("Добавить раздел")
.AddSection visSectionUser


'("Вставить строку")
.AddRow visSectionUser, 0, visTagDefault
.CellsSRC(visSectionUser, 1, visUserValue).FormulaForceU = "0"
.CellsSRC(visSectionUser, 1, visUserPrompt).FormulaForceU = """"""

'("Вставить именованную строку")
.AddNamedRow visSectionUser, "BlaBla", visTagDefault

End With

End Sub


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как добавить строку в секцию User-defined Cells Документа
СообщениеДобавлено: 03 мар 2019, 16:24 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 1396
Очков репутации: 100594

Добавить очки репутацииУменьшить очки репутации
Цитата:
Из этого кода можно сделать вывод, что есть некий шейп, который олицетворяет документ...
И ещё меня смущает, что всё действие идёт через объект Window (ActiveWindow), а не через Document...

Точнее - действие "начинается" с объекта Window.
В общем-то, до шейпа можно добраться разными путями. В данном случае он начался с Window. Но можно было начать с другого объекта. Причем с другого объекта - лучше, потому как Application.ActiveWindow.Shape выглядит несколько невразумительно.
И да, документ похож на шейп, потому что у него есть DocumentSheet.
И страница похожа на шейп, потому что у нее есть PageSheet.
И через эти шейп-листы можно управлять документом и страницей примерно так же, как обычным шейпом через его шейп-лист.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как добавить строку в секцию User-defined Cells Документа
СообщениеДобавлено: 03 мар 2019, 16:25 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 513
Использую Visio c: 2008
Очков репутации: 105

Добавить очки репутацииУменьшить очки репутации
Не проверил. Поправка:
Код:
With ActiveDocument.DocumentSheet


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как добавить строку в секцию User-defined Cells Документа
СообщениеДобавлено: 03 мар 2019, 16:30 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 513
Использую Visio c: 2008
Очков репутации: 105

Добавить очки репутацииУменьшить очки репутации
Можно вставить сразу несколько строк:
Код:
Sub wewe()
With ActiveDocument.DocumentSheet

.AddRows visSectionUser, 0, visTagDefault, 5 ' 5 - количество строк

End With
End Sub


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Как добавить строку в секцию User-defined Cells Документа
СообщениеДобавлено: 03 мар 2019, 18:37 
Не в сети
Постоянный участник

Зарегистрирован: 16 окт 2016, 12:41
Сообщений: 59
Использую Visio c: 2016
Очков репутации: 4

Добавить очки репутацииУменьшить очки репутации
Всем спасибо за ответы. DocumentSheet решает данную проблему как мне надо.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Вы можете создать форум бесплатно PHPBB3 на Getbb.Ru, Также возможно сделать готовый форум PHPBB2 на Mybb2.ru
Русская поддержка phpBB