2016-04-14 5 views
0

Я работаю над экспортом содержимого из Excel в PowerPoint. У меня есть пустой отформатированный слайд в моей презентации PowerPoint, который мне нужно дублировать каждый раз и писать на нем. Проблема в том, что мой код добавляет новый слайд перед текущим слайдом, который создает проблемы при записи содержимого на точный номер слайда. Я хочу, чтобы новый слайд был добавлен после текущего слайда.Excel VBA Дублирование слайда в PowerPoint

 Set pptSlide = oPPTApp.ActivePresentation.Slides(1).Duplicate.Item(1) 
     oPPTFile.Slides(SlideNum).Select 
     Set oPPTShape = oPPTFile.Slides(SlideNum).Shapes("Table 1") 

любые предложения?

+0

Попробуйте удалить '.Item (1)' от вашей первой линии. Согласно [документации .Duplicate()] (https://msdn.microsoft.com/de-de/library/office/ff745804.aspx), 'pptSlide' должен быть вторым слайдом уже. – Verzweifler

+0

@VerzweiflerПосле удаления '.Item (1)', он дает ошибку несоответствия типа как '.Duplicate' Возвращает диапазон, а не слайд. – Nikky

+0

Я не уверен, что я понимаю проблему «мой код добавляет новый слайд перед текущим слайдом» по сравнению с тем, что вы хотите «Я хочу, чтобы новый слайд был добавлен после текущего слайда». Кроме того, пытаетесь ли вы записать дубликат слайда или другой слайд, определенный слайдом? Если позже, как устанавливается SlideNum как добавление дубликата, будет изменена индексация коллекции слайдов? –

ответ

1

Существует почти НИКОГДА хорошая причина, чтобы выбрать что-либо при автоматизации PPT. Предполагая форму под названием Таблица 1 на слайде 1, это должно делать то, что вы хотите:

Dim oSl As Slide 
Dim oSh As Shape 

Set oSl = ActivePresentation.Slides(1).Duplicate()(1) 
Set oSh = oSl.Shapes("Table 1")