Usar eventos com objetos de aplicativo e do Project

Você pode gravar os procedimentos de evento no nível do aplicativo ou o nível do projeto. Por exemplo, o evento ativar ocorrerá no nível do projeto quando um projeto é ativado e o NewProject ocorrerá no nível do aplicativo quando um projeto é criado.

Procedimentos de evento no objeto Project estão disponíveis para qualquer projeto aberto. Para gravar os procedimentos de evento para o objetoaplicativo, crie um novo objeto usando a palavra-chave WithEvents em um módulo de classe. As etapas a seguir mostram como criar e testar um aplicativo manipulador de eventos simples:

  1. No Editor do Visual Basic, no menu de opção VBAProject, escolha Inserire, em seguida, escolha Módulo de Classe para criar uma classe chamada Class1. Você pode renomear o módulo de classe no painelPropriedades. Nos exemplos a seguir, a classe é denominada TestClass.

  2. Paste the following code in the TestClass module.

  Option Explicit 
Public WithEvents oApp As Application 
 
Private Sub oApp_NewProject(ByVal pj As Project) 
    MsgBox "You created the " & pj.Name & " project." 
End Sub 
 
Private Sub Class_Initialize() 
    ' Add class initialization statements here, if needed. 
End Sub 
  1. Abra o módulo ThisProject e cole o seguinte código.
  Option Explicit 
Private tClass As New TestClass 
 
Sub TestNewProjectEvent() 
    Set tClass.oApp = Application 
    tClass.oApp.Projects.Add 
    Projects.Add 
End Sub
  1. Run the TestNewProjectEvent macro. The macro calls the Projects.Add method twice—once through the TestClass object and once directly through the Application object. When the Project application creates the first project, the result is a Microsoft Project dialog box with the message You created the Project2 project. Quando você clicar OK, o Project cria o segundo projeto e mostra outra caixa de diálogo com a mensagem Você criou o projeto do Project3.

Importante Para eventos no nível do aplicativo, registre manipuladores de eventos depois de definir Application.Visible = True.

Se você instanciar o Project de outro aplicativo e registrar um evento no nível do aplicativo antes de definir a propriedade Visible do objeto Application como True, as propriedades e os métodos dos objetos filho de Application não funcionarão. Por exemplo, Application.ActiveProject.Name não é acessível.

Observaçãoo código do evento no seu projeto pode executar inesperadamente ou pode ser bloqueado caso exista um código de evento no arquivo global (Global.mpt).

  • Se houver código para um evento de projetos e arquivos globais, apenas o código no evento project é executado.

  • If code for an event does not exist in a project, but does exist in the global file, the code in the global event runs.

  • If code for one of the three events Application.ProjectBeforeClose, Application.ProjectBeforeSave, or Project.Open exists in the global file, but not in the project, it affects both the global and project files. If code exists for those events in both the global and project files, the code in the global file affects the global file, and the code in the project file affects the project.

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.