2015-12-15 3 views
-1

Используя Word VBA, можно ли получить/получить ссылку на объект диаграммы, используя имя диаграммы?Как получить доступ к диаграмме по имени

В интерфейсе Word вы можете открыть «панель выбора» и указать имя диаграммы. Я хотел бы использовать это свойство имени для доступа к диаграмме в VBA.

Если я не могу использовать это имя, мне нужно получить ссылку через более громоздкий маршрут, разместив диаграмму как часть коллекции InlineShape диапазона.

Set MyChart= wrdApp.Selection.InlineShapes(1).Chart 

Но это очень утомительно, так что было бы здорово, чтобы иметь возможность перемещаться прямо на графике на основе имени ...

+0

Одна из возможностей - выбрать InlineShape и вставить закладку «вокруг». Затем вы можете забрать его по закладке: Doc.Bookmarks («name»). Range.InlineShapes (1) –

ответ

0

InlineShape-объекты не имеют свойство имени. Если преобразовать их в форму объекты, которые они делают, но вы все равно придется обратиться к ним с InlineShapes(index) для преобразования:

Sub ShapeTest() 
    Dim oShp As Shape 

    If ThisDocument.InlineShapes.Count > 0 Then 
     Set oShp = ThisDocument.InlineShapes(1).ConvertToShape 
     MsgBox "Shape name = " & ThisDocument.Shapes(oShp.Name).Name 
    End If 

    Set oShp = Nothing 
End Sub 

(образец довольно бессмысленно, но вы получите идею)

EDIT:

Просто проверил online documentation for InlineShape и, кажется, что объект InlineShape как Name собственности в Слове 2013 и более поздние версии. В какой версии вы работаете? У меня есть только доступ к Word 2010, где мой предыдущий вариант верен.

+1

IMO ваше оригинальное сообщение верное. Осторожность ценна, но AFAICS онлайн-документация неверна. «Имя» указано как метод (что было бы необычно для Word/VBA), и нет никакой ссылки на какую-либо дополнительную информацию. В обозревателе объектов в Word 2016 VBA (но я не проверял 2013 год), нет члена имени (даже со скрытыми элементами, отображаемыми). Член .Item коллекции InlineShapes определяет индекс как «как длинный», который в значительной степени исключает значение индекса строки. В коллекциях, где возможны оба типа индекса, он обычно определяется как (Index), а не (Index As Long) –

+0

@bibadia OK, спасибо за информацию! Ваш комментарий имеет смысл, документация, вероятно, нуждается в обновлении. –

Смежные вопросы