2013-08-07 3 views
1

Использование Powerpoint 2010 для Mac.Программно создайте слайды PowerPoint [Mail Merge] из данных Excel

У меня есть презентация на 100 слайдов, которая должна быть создана еженедельно. Каждый слайд имеет одинаковый шаблон. Элементы на каждом слайде состоят из 5 текстовых полей и изображения, каждый слайд соответствует столбцам данных в таблице Excel.

Может ли кто-нибудь указать мне на пример кода или подробное пошаговое руководство по тому, как я могу прокручивать строки этого файла Excel и программно создавать эти слайды?

+0

Существует PPT 2011 для Mac или 2010 для ПК. Если у вас действительно есть версия для ПК, есть несколько примеров автоматизации Excel и извлечения данных в PowerPoint на моем сайте PowerPoint FAQ (www.pptfaq.com и поиск по названию «Naresh» ... он тот, кто написал больше всего из хорошего материала). Для готового коммерческого решения я продаю надстройку Merge, http://www.pptools.com/merge/ ... бесплатную, полностью функциональную демонстрационную версию. Код в PPTFAQ может быть адаптирован к Mac, если у вас есть 2011. –

ответ

3

Это, безусловно, возможно, и очень весело :-)

Моей первой рекомендации, чтобы создать шаблон 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 

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

+0

Rowan, честно говоря, я немного смущен. У вас есть примеры файлов с поддержкой макросов PPT и XLS, на которые вы можете указать мне? –

+0

Я пробовал написать более подробную версию здесь: http://www.excelman.net/archives/79 – RowanC

0

Отдельное приложение SlideMight принимает шаблон PowerPoint, файл данных JSON и конфигурацию и объединяет их в презентацию.

Итерации могут быть по слайдам и над строками таблицы, и они могут быть вложенными. Подстановка изображения поддерживается также в ячейках таблицы.

Отказ от ответственности: Я разработчик & продавец SlideMight.

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