Ошибка при копировании и вставке данных из другого ppt

Я пытаюсь скопировать слайд 1 из внешней ppt в текущую ppt на страницу заметок. Однако я получаю сообщение об ошибке:

Слайды (неизвестный участник): неверный запрос. Буфер обмена пуст или содержит данные, которые нельзя сюда вставить.

Внешний ppt, откуда я копирую, содержит данные.

Сценарий VBA:

Sub copySlide()
Dim objPresentation As Presentation

Set objPresentation = Presentations.Open("/path/slides.ppt")

objPresentation.Slides.Item(1).Copy
Presentations.Item(1).Slides.Paste

objPresentation.Close
End Sub

person Rahul Dagli    schedule 16.03.2017    source источник
comment
не будет этой строки: Presentations.Item(1).Slides.Paste, которая неверна? вы хотите вставить слайд в ActivePresentation?   -  person basslo    schedule 16.03.2017
comment
Да, я хочу скопировать слайд из внешнего ppt в открытый в данный момент ppt, через который я запускаю макросы.   -  person Rahul Dagli    schedule 16.03.2017
comment
@RahulDagli смотрите мой ответ ниже, дайте мне знать, работает ли он так, как вы предполагали   -  person Shai Rado    schedule 16.03.2017


Ответы (1)


Попробуйте приведенный ниже код. Надеюсь, ваша презентация на ("/path/slides.ppt") не приведет к ошибке.

Я добавил 2 варианта, либо разместить его в конце, либо как второй слайд - вы можете легко изменить строку Paste

Код

Sub copySlide()

Dim MyPres          As Presentation
Dim objPresentation As Presentation

Set MyPres = ActivePresentation
Set objPresentation = Presentations.Open("/path/slides.ppt")

objPresentation.Slides(1).Copy
'MyPres.Slides.Paste MyPres.Slides.Count + 1 ' <-- place it at the end
MyPres.Slides.Paste 2 ' <-- place it as the second slide

objPresentation.Close
Set objPresentation = Nothing ' clear object

End Sub
person Shai Rado    schedule 16.03.2017
comment
Я попробовал ваш код, но все равно получаю ту же ошибку в этой строке MyPres.Slides.Paste 2 ' <-- place it as the second slide - person Rahul Dagli; 16.03.2017
comment
@RahulDagli в строке кода есть ', верно? между MyPres.Slides.Paste 2 и комментарием после него? - person Shai Rado; 16.03.2017
comment
Да, я точно скопировал и вставил ваш код, только путь я изменил. - person Rahul Dagli; 16.03.2017
comment
@RahulDagli, что произойдет, если вы попробуете линию раньше? попробуйте использовать 'MyPres.Slides.Paste MyPres.Slides.Count + 1 посмотрите, вставится ли он до конца - person Shai Rado; 16.03.2017
comment
@RahulDagli Я не уверен, что вы не ошибетесь при копировании слайда, что произойдет, если вы добавите MsgBox objPresentation.Name & " has " & objPresentation.Slides.Count после строки Set objPresentation = Presentations.Open? - person Shai Rado; 16.03.2017
comment
Давайте продолжим обсуждение в чате. - person Rahul Dagli; 16.03.2017
comment
Решено! Хитрость заключается в том, чтобы сначала открыть обычный вид, запустить макросы, а затем переключиться в режим заметок. - person Rahul Dagli; 16.03.2017