Как определить форму в PowerPoint с помощью VBA?

Это простой и простой вопрос, но невозможно найти ответ или хорошее руководство в Интернете. И, очевидно, нет возможности найти его в этой справке Office.

Я использую макрос в VBA для создания PowerPoint. Код состоит в копировании слайда шаблона документа Powerpoint, присваивающего значение Excelline определенной форме шаблона PPT.

Вопрос в следующем: я понятия не имею, как определять форму, как в этом предыдущем коде:

PptDoc.Slides(iSlide).Shapes("URL").TextFrame.TextRange = VerbatimSheet.Cells(i, 2).Value

Как я могу определить форму «URL»? В шаблоне или в макросе VBA Excel?


person c24b    schedule 15.09.2011    source источник
comment
Кстати, кто-нибудь КОГДА-ЛИБО нашел что-нибудь в справке MS Office?   -  person c24b    schedule 15.09.2011


Ответы (3)


Вы можете использовать индекс объекта, например

Dim shp as shape
Set shp=pptdoc.slides(islide).shapes(1)
shp.textframe.textrange= foo
person Bruno Leite    schedule 15.09.2011

В шаблоне слайда ppt дайте вашей фигуре имя «URL» - не так просто назвать фигуры в ppt, как в (например) xl, но это можно сделать.

Просто введите это в непосредственном окне редактора ppt VB (с выбранной формой) и нажмите Enter:

ActiveWindow.Selection.shaperange(1).Name = "URL"

Вы можете проверить его работу, введя:

? ActiveWindow.Selection.shaperange(1).Name 'should get "URL"
person Tim Williams    schedule 15.09.2011

Два ответа верны и очень помогают мне понять этот очень простой шаг. Это отличный урок для меня, спасибо

Первый код - это стильный способ избавиться от проблемы. Он имеет то преимущество, что по умолчанию определяет имя для формы и напрямую связывает его со значением, которое я присваиваю внутри кода.

Второй - хороший способ помочь новичку в программировании, но требует двух макросов. Один в Excel и один в ppt и позволяет изменять имя фигур вручную. Его преимущество заключается в том, что он помогает визуализировать именно ту форму, которую вы используете и которую нужно контролировать.

Большое спасибо вам обоим!

person c24b    schedule 16.09.2011