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

Форум по вопросам применения и программирования в Visio
Текущее время: 28 мар 2024, 19:50

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


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


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

Для форматирования ваших сообщений используйте BBCodes, описание используемых на форуме BBCodes.



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Эмбедированный Word
СообщениеДобавлено: 25 сен 2017, 18:14 
Не в сети

Зарегистрирован: 25 сен 2017, 17:40
Сообщений: 3
Использую Visio c: 2013
Уровнь квалификации: новичок
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Встречал редактирование эмбедированных visio объектов в Word документ.
Но нигде не встречал решение по редактированию внедренных word объектов в visio силами vba.
Подскажите, пожалуйста, как получить доступ к word объекту и его автоматическое редактирование с помощью vba.


Вложения:
.vsd [98 Кб]
Скачиваний: 115
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Эмбедированный Word
СообщениеДобавлено: 25 сен 2017, 19:08 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Да так же, как с любым объектом. Запускаете Watch Window и рассматриваете содержимое объекта.
Потом по аналогии пишете VBA.
Получается примерно так
Код:
Sub ttt()
    Dim shp As Visio.Shape
    Set shp = ActivePage.Shapes(1)
    Debug.Print shp.Object.Application.Name
    Debug.Print shp.Object.Application.Documents(1).Paragraphs(1).Range.Text
End Sub


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Эмбедированный Word
СообщениеДобавлено: 26 сен 2017, 14:27 
Не в сети

Зарегистрирован: 25 сен 2017, 17:40
Сообщений: 3
Использую Visio c: 2013
Уровнь квалификации: новичок
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Ответ мне кажется профессиональным, но как его применить не могу понять :(
Tumanov писал(а):
Да так же, как с любым объектом. Запускаете Watch Window и рассматриваете содержимое объекта.

Запустить в редакторе могу, но как просмотреть содержимое?

Tumanov писал(а):
Потом по аналогии пишете VBA.

По аналогии чему?

Вставил ваш пример в редактор Excel. На строке "Set shp = ActivePage.Shapes(1)" появляется ошибка "ActiveX component can't create object"


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Эмбедированный Word
СообщениеДобавлено: 26 сен 2017, 14:37 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Ну так, Excel здесь совершенно ни при чем. У нас же форум по Visio :)
В первой строке выбирается первый шейп на странице Visio. Считается, что этот шейп содержит встроенный объект Word.
Вам нужен пример для Excel?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Эмбедированный Word
СообщениеДобавлено: 26 сен 2017, 14:47 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Для Excel будет вот так
Код:
Sub ttt()
    Dim sht As Excel.Worksheet
    Set sht = Application.ActiveSheet
    Debug.Print sht.OLEObjects(1).Object.Paragraphs(1).Range.Text
End Sub


Set sht = Application.ActiveSheet - берем активный лист в Excel
sht.OLEObjects(1).Object - выбираем первый встроенный объект на этом листе. Подразумевается, что это объект Word.
.Paragraphs(1).Range.Text - выводим текст первого параграфа из этого объекта
------------
В References должна быть добавлена галочка на Microsoft Word ... Object Library


Вложения:
Prim.xlsm [24.65 Кб]
Скачиваний: 118
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Эмбедированный Word
СообщениеДобавлено: 26 сен 2017, 15:00 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Ой, конкретные же вопросы были...
Цитата:
Запустить в редакторе могу, но как просмотреть содержимое?

Не просто в редакторе, а в режиме отладки. Поставить точку останова и рассматривать в Watсh окне содержимое переменных (и объектов).
Цитата:
По аналогии чему?

Расссмотрели структуру объекта в окне отладки, потом строим аналогичную структуру обращения в VBA. Структура одна, а представления разные. В одном слечае объекты нарисованные, в другом - последовательность имен, написанная через точку. Вот это понималось под аналогией.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Эмбедированный Word
СообщениеДобавлено: 26 сен 2017, 15:41 
Не в сети

Зарегистрирован: 25 сен 2017, 17:40
Сообщений: 3
Использую Visio c: 2013
Уровнь квалификации: новичок
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Спасибо за отклик.
Файлик скачал.
У меня стоят галочки Microsoft Word/Excel/Office/Visio ... Object Library, но на команде Debug.Print sht..... выдает ошибку: Run-time error 1004: App-def or obj-def error

Вопрос мой относиться к Visio. В Visio вставлен word документ и есть необходимость из Excel достать этот word в файле visio и его отредактировать.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Эмбедированный Word
СообщениеДобавлено: 26 сен 2017, 16:32 
Не в сети
Administrator

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

Добавить очки репутацииУменьшить очки репутации
Ну так это немножко посложнее...
Сначала (из Excel) нужно будет обычным образом создать Visio.Application и открыть в нем нужный документ (файл) Visio.
Потом по первому примеру уже в документе Visio найти нужный объект и лезть в него.
Причем в примере я просто сделал единственный шейп с объектом Word и лезу в него. Поэтому и пишу ActivePage.Shapes(1) - это значит первый шейп на активной странице.
Вам этот объект скорее всего придется искать (в каком шейпе он размещен). Возможно, придется перебирать все шейпы на странице, проверяя тип объекта. Ну это уже зависит от того, что имеется на вашем рисунке Visio.


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

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



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

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


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

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