Это, безусловно, возможно, и очень весело :-)
Моей первой рекомендации, чтобы создать шаблон PowerPoint с помощью представлений мастера, с заполнителями и званиями все готовы. Затем запустите следующий макрос PowerPoint, чтобы вы могли получить имя и индекс/идентификатор для каждой фигуры на странице.
Sub nameshapes()
Dim sld As Slide
Dim shp As Shape
Set sld = Application.ActivePresentation.Slides(1)
For Each shp In sld.Shapes
shp.TextEffect.Text = shp.name & " " & shp.ID
Next
End Sub
Это быстрый и грязный кусок кода, который помещает имя индекса & каждого элемента на странице шаблона, в самой форме. Запомните, запишите их. Это ваши контрольные точки, где вы хотите, чтобы вещи шли. Я не собираюсь разбираться в основах цикла и т. Д., Но переходим через кодовые клавиши.
1) Открыть и получить контроль над powerpoint от excel.
Set ppt = CreateObject("PowerPoint.Application")
ppt.Visible = True
Set myPPT = ppt.Presentations.add
myPPT.ApplyTemplate ("Your template here.potx")
Я затем добавить все страницы мне нужно, (это может варьироваться в зависимости от вашего приложения, и количество строк, и есть ли у вас это в начале, или в процессе, будет зависеть от ли вы наметили, какие страницы вы должны поместить данные на, в ваших данных)
For x = 1 To NumberOfPages
myPPT.Slides.AddSlide x, myPPT.SlideMaster.CustomLayouts(2) '2 is the index of the template I wish to use (in master views, the index is the order they're in (starting from 1)
Next
Я предполагаю, что вы знаете, какие страницы вы хотите обновить в каждой строке, так:
For Each dr In .rows 'I'm storing my data in a special collection, you will need to adapt this
Set currSlide = myPPT.Slides(dr.cell("OutputPage").Value) 'go to the right page
Sheets(dr.cell("SheetName").toString).Activate 'make sure the data you want is active
ActiveSheet.Range(Names(dr.cell("ChartID").Value)).CopyPicture 'copy the table as a picture, this is easiest for formatting in powerpoint, but you can do lots of things here
currSlide.Select
currSlide.Shapes("Content Placeholder " & dr.cell("Output Position").toString).Select 'the output position is the index from the first bit of code,
ppt.ActiveWindow.View.Paste
next
Теперь ваше приложение будет определенно отличаться от этого, но я надеюсь, что все основные потребности есть, и это должно быть хорошей отправной точкой.
Существует PPT 2011 для Mac или 2010 для ПК. Если у вас действительно есть версия для ПК, есть несколько примеров автоматизации Excel и извлечения данных в PowerPoint на моем сайте PowerPoint FAQ (www.pptfaq.com и поиск по названию «Naresh» ... он тот, кто написал больше всего из хорошего материала). Для готового коммерческого решения я продаю надстройку Merge, http://www.pptools.com/merge/ ... бесплатную, полностью функциональную демонстрационную версию. Код в PPTFAQ может быть адаптирован к Mac, если у вас есть 2011. –