Как скопировать/вставить текстовое поле из MS Word в слайд Powerpoint?

В настоящее время я создаю документ, который возьмет формат и текст из документа MS Word и вставит его в текстовое поле в шаблоне PowerPoint. Я просмотрел все, чтобы увидеть, как это можно сделать, и не нашел многого. Любая помощь приветствуется!!

Public Sub CommandButton1_Click()
Dim pptApp As Object
Dim pptPres As String
Dim folderPath, file As String

    folderPath = ActiveDocument.Path & Application.PathSeparator
    file = "Huntington_Template.pptx"
    pptApp.Visible = True
    pptApp.presentations.Open (folderPath & file)

    ActiveDocument.Bookmarks("Update_Image").Range.Copy 'text box to copy in MS WS
    'not sure what to do next?

End Sub

person James    schedule 08.07.2014    source источник


Ответы (1)


Я заметил несколько ошибок в вашем коде:

  • Вы не создали экземпляр 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
comment
Это круто! Благодарю вас! Я пытаюсь вставить содержимое непосредственно в текстовое поле на слайде, а не прямо на слайд. Можешь помочь и с этим? Я добавил справочную библиотеку PowerPoint 14.0, поэтому теперь у меня есть доступ к этим методам. - person James; 09.07.2014
comment
При присвоении имени фигуре/текстовому полю в PowerPoint это делается через область выбора на вкладке «Форматирование»? - person James; 09.07.2014
comment
Да, я как раз собирался упомянуть об этом. Если вы не знаете имя, используйте панель выбора, чтобы увидеть имя (и при необходимости отредактируйте его). - person David Zemens; 09.07.2014
comment
Кстати, обновил мой ответ выше, чтобы вставить его в определенную форму в PowerPoint :) - person David Zemens; 09.07.2014
comment
Дайте мне знать, работает ли это для вас, и если да, рассмотрите возможность принятия ответа, чтобы другие с аналогичными вопросами в будущем могли извлечь из этого пользу. - person David Zemens; 09.07.2014
comment
Дэвид, это работает потрясающе! Мне придется сделать некоторые манипуляции, чтобы настроить вещи, но это потрясающе! Благодарю вас! Как принять ответ? - person James; 14.07.2014
comment
Подробнее о том, как/когда/почему принимать ответ, см. здесь: meta.stackexchange.com/a/5235/260832 - person David Zemens; 14.07.2014