Форум пользователей Visio
http://visio.getbb.ru/

Как добавить строку в секцию User-defined Cells Документа
http://visio.getbb.ru/viewtopic.php?f=6&t=1426
Страница 1 из 1

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

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

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

Автор:  Surrogate [ 03 мар 2019, 16:02 ]
Заголовок сообщения:  Re: Как добавить строку в секцию User-defined Cells Документа

DocumentSheet, не пробовали?

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

Автор:  Shishok [ 03 мар 2019, 16:02 ]
Заголовок сообщения:  Re: Как добавить строку в секцию User-defined Cells Документа

Типа так:

Код:
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

Автор:  Tumanov [ 03 мар 2019, 16:24 ]
Заголовок сообщения:  Re: Как добавить строку в секцию User-defined Cells Документа

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

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

Автор:  Shishok [ 03 мар 2019, 16:25 ]
Заголовок сообщения:  Re: Как добавить строку в секцию User-defined Cells Документа

Не проверил. Поправка:
Код:
With ActiveDocument.DocumentSheet

Автор:  Shishok [ 03 мар 2019, 16:30 ]
Заголовок сообщения:  Re: Как добавить строку в секцию User-defined Cells Документа

Можно вставить сразу несколько строк:
Код:
Sub wewe()
With ActiveDocument.DocumentSheet

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

End With
End Sub

Автор:  Machestro [ 03 мар 2019, 18:37 ]
Заголовок сообщения:  Re: Как добавить строку в секцию User-defined Cells Документа

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

Страница 1 из 1 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/