2010-02-19 2 views
2

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

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

+0

Надстройка загружается одновременно с powerpoint, не так ли? Или надстройка, загруженная вручную после того, как PowerPoint открыта? – guitarthrower

+0

Это работает после загрузки дополнения. Я имею в виду, когда я загружаю приложение в первый раз! Это возможно? –

ответ

1

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

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

  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). Установите и загрузите добавочный файл (попробуйте разгрузить/загрузить снова, если он не запускается), и вы должны иметь текстовое поле, созданное на активной презентации.

Уведомление в № 2: Application.Run (p.Name & "!AddText"). Имя предания (включая расширение) и «!» с именем подпрограммы необходимо запустить макрос в другой презентации.