Я заметил несколько ошибок в вашем коде:
- Вы не создали экземпляр PowerPoint.Application
- Вы объявили
pptPres
как строку, но, вероятно, должно быть As Object
для представления объекта Powerpoint.Presentation
- Вы не назначаете никаких назначений
pptPres
Это было бы проще сделать с помощью .Name
Shape, но я думаю, что это сработает. Я сделал некоторые другие изменения, чтобы объявить еще несколько переменных в дополнение к указанным выше.
Sub Test()
Dim pptApp As Object 'PowerPoint.Application
Dim pptPres As Object 'PowerPoint.Presentation
Dim folderPath As String, file As String
Dim bk As Bookmark
Dim doc As Document
Dim wdRange As Range
Dim shpTextBox as Object 'PowerPoint.Shape
'## As a matter of prefernce I use variable rather than "ActiveDocument"
Set doc = ActiveDocument
'## Use a variable for the bookmark
Set bk = doc.Bookmarks("Update_Image")
'## Assign to the pptApp Application Object
Set pptApp = CreateObject("PowerPoint.Application")
folderPath = doc.Path & Application.PathSeparator
file = "Huntington_Template.pptx"
pptApp.Visible = True
'## assign to the pptPres Presentation Object
Set pptPres = pptApp.presentations.Open(folderPath & file)
'## Select the bookmark so we can copy it
bk.Select
'## Copy it
Selection.Copy
'Note: ensure you are at the correct slide location
'## Assign to the shpTextBox & select it:
Set shpTextBox = pptPres.Slides(1).Shapes("Text Box 2")
shpTextBox.Select
'## Paste in to PPT
pptApp.CommandBars.ExecuteMso "PasteSourceFormatting"
End Sub
ПРИМЕЧАНИЕ Это вставляется прямо на слайд. Если вам нужно поместить его в определенное текстовое поле/форму на слайде PowerPoint, сообщите мне об этом. Я совершенно уверен, что это можно сделать, указав имя формы в PowerPoint/etc.
Я уже видел метод CommandBars.ExecuteMso
, но он не очень хорошо документирован по сравнению со многими другими методами. Application.CommandBars
ссылка на свойство содержит ни слова о методе ExecuteMso
, информацию о котором я нашел здесь:
http://msdn.microsoft.com/en-us/library/office/ff862419%28v=office.15%29.aspx
Этот метод полезен в тех случаях, когда для конкретной команды нет объектной модели. Работает с элементами управления, которые являются встроенными кнопками, toggleButtons и splitButtons.
Вам понадобится список параметров idMso для изучения, которые входят в состав довольно большого загружаемого файла, актуального, по-моему, для Office 2013:
http://www.microsoft.com/en-us/download/details.aspx?id=727
person
David Zemens
schedule
08.07.2014