Quando você deseja usar a funcionalidade de outros aplicativos, você deve decidir se deseja usar
vinculação antecipada ou tardia de variáveis de objeto.
Encadernação antecipada
A ligação entre a variável do objeto e o objeto ocorre quando o aplicativo é compilado.
Isso resulta em melhor desempenho em comparação com quando a vinculação ocorre quando o aplicativo é executado (vinculação tardia).
Se você deseja criar uma ligação inicial, você deve definir uma referência para a biblioteca de objetos "estrangeiros" que deseja usar.
Isso é feito a partir do VBE usando o menu Ferramentas, Referências…. Quando um VBProject tem uma referência a um
biblioteca de objetos, você pode declarar variáveis de objeto específicas (por exemplo, Dim oDoc As Word.Document). Isso também fará com que seja
mais fácil de programar os "objetos estranhos", pois o VBE exibirá a mesma ajuda de programação em relação às propriedades,
métodos e eventos que exibe para os objetos pertencentes ao aplicativo que você está trabalhando
de (o VBE adicionou automaticamente a referência a este aplicativo com antecedência).
Este é um exemplo de código geral que mostra o erro de automação de vba:
Sub OLEAutomationEarlyBinding () 'substitui xxx por um dos seguintes:' Access, Excel, Outlook, PowerPoint ou Word Dim oApp As xxx.Application 'early binding Dim oDoc As xxx.Document' Excel.Workbook, Outlook.MailItem, PowerPoint.Presentation , Word.Document On Error Resume Next 'ignorar erros Set oApp = GetObject (, "xxx.Application")' referenciar uma instância de aplicativo existente Se oApp for Nothing Then 'nenhum aplicativo existente está sendo executado Set oApp = New xxx.Application' criar um nova instância do aplicativo End If On Error GoTo 0 'retomar o tratamento de erro normal If oApp Is Nothing Then' não é possível criar o aplicativo MsgBox "O aplicativo não está disponível!", vbExclamation End If With oApp .Visible = True 'tornar o objeto do aplicativo visível 'neste ponto o aplicativo está visível' faça algo dependendo do aplicativo… Defina oDoc = .Documents.Open ("c: \ foldername \ filename.doc") 'abra um documento'… oDoc.Close True 'feche e salve o documento. Sair 'feche o aplicativo End With Set oDoc = Nothing 'free memory Set oApp = Nothing' free memory End Sub
Ligação tardia
A ligação entre a variável do objeto e o objeto ocorre quando o aplicativo é executado.
Isso resulta em um desempenho mais lento em comparação com quando a vinculação ocorre quando o aplicativo é compilado (vinculação inicial).
Se você não adicionar uma referência à objectlibrary pertencente ao aplicativo "estrangeiro", você deve
declara variáveis de objeto gerais (por exemplo, Dim oDoc As Object). Isso tornará mais difícil programar
os "objetos estranhos", pois o VBE não exibirá a mesma ajuda de programação em relação às propriedades,
métodos e eventos que ele exibe para os objetos pertencentes ao aplicativo a partir do qual você está trabalhando.
Este é um exemplo de código geral:
Sub OLEAutomationLateBinding () 'substitui xxx por um dos seguintes:' Access, Excel, Outlook, PowerPoint ou Word Dim oApp As Object 'vinculação tardia Dim oDoc As Object' vinculação tardia On Error Resume Next 'ignorar erros Set oApp = GetObject (, "xxx.Application") 'referencia uma instância de aplicativo existente If oApp Is Nothing Then' nenhum aplicativo existente está sendo executado Set oApp = CreateObject ("xxx.Application") 'cria uma nova instância de aplicativo End If On Error GoTo 0' retoma o erro normal manipulação If oApp Is Nothing Then 'não é capaz de criar o aplicativo MsgBox "O aplicativo não está disponível!", vbExclamation End If With oApp .Visible = True' tornar o objeto do aplicativo visível 'neste ponto o aplicativo está visível' faça algo dependendo na aplicação… Definir oDoc = .Documents.Open ("c: \ nome da pasta \ nome do arquivo.doc") 'abrir um documento'… oDoc.Close True 'fechar e salvar o documento .Quit' fechar a aplicação End With Set oDoc = Nothing 'free memory Set oApp = Nothing' fr ee memória End Sub