A função `GetObject` em VBA é usada para obter a referência a um objeto que já está em execução. Ela pode ser especialmente útil para interagir com aplicativos do Microsoft Office que já estão abertos, como Excel, Word, ou Access. Aqui está um guia básico sobre como usar a função `GetObject`.
Sintaxe Básica
Set objectVariable = GetObject([pathname] [, class])
- pathname: Esta é uma string opcional que especifica o caminho completo do arquivo que contém o objeto. Se você fornecer o pathname, deve ser o caminho completo para um documento existente. Caso contrário, o VBA tenta obter um servidor ativo de classe especificada.
- class: Esta é uma string opcional que representa o nome da classe do objeto. Tem o formato `appname.objecttype` (por exemplo, “Excel.Application”). Se você não fornecer um caminho, esta string é necessária para identificar a classe do objeto que você deseja.
Exemplos de Uso
- Obter um Objeto de um Documento Existente
Se você quiser obter o objeto de uma instância de um aplicativo da Microsoft já em execução, pode especificar o pathname do arquivo. Por exemplo, para abrir um documento do Excel:
Dim xlApp As Object
Dim xlBook As Object
' Abre o workbook especificado e retorna a referência ao workbook
Set xlBook = GetObject("C:CaminhoParaSeuArquivo.xlsx")
' Obtém a aplicação do Excel a partir do workbook
Set xlApp = xlBook.Application
' Agora pode usar xlApp para manipular o Excel
xlApp.Visible = True ' Torna o Excel visível
- Obter um Objeto Aplicativo em Execução
Caso você queira apenas obter a aplicação sem se referir a um arquivo específico (se o aplicativo já estiver em execução):
Dim xlApp As Object
' Obtém a aplicação do Excel em execução
Set xlApp = GetObject(, "Excel.Application")
' Agora pode usar xlApp para manipular a aplicação
xlApp.Visible = True ' Torna o Excel visível
Considerações
- Se o objeto que você está tentando acessar não estiver em execução, o `GetObject` lançará um erro. Você pode usar o tratamento de erros para lidar com essa situação e talvez iniciar o aplicativo se não estiver em execução.
- Use `CreateObject` se precisar iniciar uma nova instância de um aplicativo.
- Certifique-se de liberar os objetos (`Set objectVariable = Nothing`) quando terminar, para liberar recursos.
Esses exemplos devem fornecer uma base sólida para começar a usar `GetObject` no VBA. Caso específico algum comportamento ou configuração dependa de versões específicas dos aplicativos ou do VBA.