Как создать субботу в VBA, который выполняется при загрузке его корреспондента?

StackOverflow https://stackoverflow.com/questions/2296283

Вопрос

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

Как я могу это сделать?

Это было полезно?

Решение

Если я правильно вас понимаю, у вас есть дополнение, которое вы хотите запустить подкзадача существующей слайд-колоды только при загрузке добавления.

Если так, вот инструкции о том, как это сделать:

  1. Создайте слайд-колоду, сохраните ее как «Presentation3.pptm» (макро-поддержка PPT за 2007 год). Откройте VBE и поместите следующий код:

    Sub AddText()
    Dim p As Presentation
    Set p = ActivePresentation
    Dim sh As Shape
    Set sh = p.Slides(1).Shapes.AddTextbox(msoTextOrientationHorizontal, 100, 100, 100, 100)
    sh.TextFrame.TextRange.Text = "hello there"
    End Sub
    
  2. Создайте дополнение сейчас. Создайте еще одну колоду, перейдите в VBE и поместите это в любой модуль:

    Sub Auto_Open()
    Dim p As Presentation
    Set p = Presentations("Presentation3")
    Application.Run (p.Name & "!AddText")
    End Sub
    
  3. Теперь сохраните это дополнение в качестве надстройки PowerPoint (.ppam). Установите и загрузите AddIn (попробуйте снова загрузить/загрузите, если он не запускается), и у вас должен быть создан текстовая коробка в активной презентации.

Обратите внимание в #2: Application.Run (p.Name & "!AddText"). Анкет Название предварительного представления (включая расширение) и "!" С подпрограммой название требуется для запуска макроса в другой презентации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top