Разница между OLEObjects и диаграммой - PullRequest
0 голосов
/ 24 декабря 2018

В чем разница между диаграммой, связанной с Excel, и объектом OLEObject?Я думал, что OLE = связывание объектов и встраивание.Моя диаграмма (которую я считал объектом) связана, так как это не OLEObject?В PPT один помечается как диаграмма, а другой (OLEObject) как объект.Я в замешательстве.

Кроме того, строка MsgBox sh.OLEFormat.Object.Count приводит к

ошибке 430

вместо того, чтобы возвращать количество OLEObjects в моей презентации PPT,Почему

 For Each Sl In pp.Slides
    For Each sh In Sl.Shapes
        If sh.Type = msoLinkedOLEObject Then
           MsgBox sh.OLEFormat.Object.Count
        End If
     Next sh
 Next Sl

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018
Dim x as Long 
Dim y as Long
For Each Sl In pp.Slides
    For Each sh In Sl.Shapes
        If sh.Type = msoLinkedOLEObject Then
           x = x + 1
        End If
     Next sh
     ' Show how many OLE objects on this slide
     MsgBox Cstr(x) & " OLE objects on Slide " & Cstr(Sl.SlideIndex)
     y = y + x
 Next Sl
 ' Show total OLE objects in presentation
 MsgBox Cstr(y) & " OLE objects in presentation"

Если вы хотите сосчитать внедренный (тип msoEmbeddedOLEObject), а также связанные диаграммы, вам необходимо изменить код.И, как указала Синди, диаграммы могут быть «родными» для PowerPoint (типа msoChart) без подключения к Excel.

0 голосов
/ 24 декабря 2018

В более ранних версиях Microsoft Office (2007 и более ранних) диаграммы были, действительно, объектами OLE, основанными на механизме создания диаграмм Excel.Для работы с ранним связыванием требовалась ссылка на объектную модель Excel.

Начиная с Office 2010, с появлением новых графических и графических движков в пакете Microsoft Office, работа с диаграммами значительно изменилась.Помимо прочего, объектная модель диаграммы была «импортирована» в объектные модели различных приложений Office, поэтому для работы с функциональностью построения диаграмм ссылка на внешнюю библиотеку больше не нужна.Объектные модели приложений Office теперь также имеют объект Chart.

Все это так, даже если создание и управление диаграммами все еще выполняется через интерфейс приложения Excel.(Действительно, (более) невозможно скрыть приложение Excel при автоматизации диаграммы.)

Итак, что касается приложений Office, диаграммы Excel теперь (для8+ лет) "нативные" части своих объектных моделей и больше не являются объектами OLE.

sh.OLEFormat.Object.Count

возвращает ошибку, поскольку у одного объекта нет свойства Count.Код не запрашивает Count для коллекции Shapes, только для одного объекта Shape.Вам понадобится переменная, чтобы сложить число раз, когда цикл встречается с msoLinkedOLEObject (что-то вроде i = i + 1).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...