All Forums
 Категория Visio
 Форум Вопросы и ответы
 Как программно открыть внедренный объект Word
Author Previous Topic Topic Next Topic  

WaW

10 Posts

Posted - 02/17/2011 :  13:01:49
На рисунке показано как из контекстного меню открывается внедренный объект Word
http://img232.imageshack.us/img232/20/context.jpg

Как программно сделать тоже самое?

WaW

10 Posts

Posted - 02/17/2011 :  13:05:12
Решил. Собственно для записи в Word информации и делал...

Dim em As Object
Set em = ActivePage.Shapes("Transition.19").Shapes.Item(4).Object

Dim wd1 As Word.Document
If TypeName(em) = "Document" Then Set wd1 = em
wd1.Range.Text = "Ура, получилось !"

Edited by - WaW on 02/18/2011 09:32:59
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 02/18/2011 :  15:44:06
Хоть и с опозданием :(, но еще пара слов на эту тему (из старых заметок).
Работа с встроенным OLE объектом
На лист Visio вставляется лист Excel. Установка width = 0 делает его невидимым. Однако данные в нем могут храниться как в нормальном листе Excel. Скорее всего и вычисляющие формулы, если понадобятся, работают нормально.
Dim sh As Visio.Shape
Sub ttt()
Set sh = ActivePage.Shapes("Sheet.1")
MsgBox sh.Name
MsgBox sh.ForeignType
MsgBox ActivePage.OLEObjects(1).ClassID
MsgBox ActivePage.OLEObjects(1).ProgID

Dim xlSheet As Excel.Worksheet

Set xlSheet = sh.Object.Worksheets(1)
xlSheet.Range("A1").Formula = 123
xlSheet.Range("A1").Offset(1, 1).Formula = "диагональ"
End Sub
Объект (и его данные) сохраняется вместе с документом Visio. Объем рисунка возрастает не сильно (простейший рисунок – 22 кб).
Пример Visio_Excel.vsd.
Примечание. С линкованными (связанными) объектами такой метод не работает. Видимо Visio допускает работу только с встроенными объектами (проверялось на Visio 2003). То есть при размещении листа Excel из файла (Insert Object / Диаграмма Microsoft Excel с выбором Create from file) выбор опции Link to file не допускается. В этом случае перестает выполняться
Set xlSheet = Sh.Object.Worksheets(1)
Для линкованного объекта sh.ForeignType дает -32512 = 8100 = visTypeIsOLE2 + visTypeIsLinked (для встроенного visTypeIsEmbedded - &H0200). Для исключения возможной ошибки прежде чем лезть к данным не мешало бы проверить тип связи.
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)