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). Для исключения возможной ошибки прежде чем лезть к данным не мешало бы проверить тип связи.
|
|
|