Как создать Sub в VBA, который выполняется при загрузке соответствующей надстройки? - PullRequest
2 голосов
/ 19 февраля 2010

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

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

1 Ответ

1 голос
/ 21 февраля 2010

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

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

  1. Создать слайд колоду, сохранить ее как "Presentation3.pptm" (с поддержкой макросов ППТ за 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"). Название презентации (включая расширение) и "!" с именем подпрограммы требуются для запуска макроса в другой презентации.

...