Pesquisar este blog

terça-feira, 22 de outubro de 2013

CREATEOBJECT

CreateObject


    Função empregada para criar e retornar uma referência a um objeto ActiveX passível de ser acessado pelo seu aplicativo, utilizando esta sintaxe:

CreateObject(Classe, [NomeDoServidor])

Onde os argumentos são:
  • .Classe: Argumento obrigatório, do tipo Variant ou String, contendo o nome do aplicativo e classe do objeto a ser criado, fornecido com a sintaxe Aplicativo.Objet, onde:
    • Aplicativo: Argumento obrigatório indicando o nome do aplicativo (ou do servidor ActiveX) fornecedor do objeto;
    • Obejto: Argumento obrigatório indicando o tipo ou a classe do objeto a ser criado.
    • NomeDoServidor: Argumento opcional do tipo Variant ou String, indica o nome do servidor de rede onde o objeto será criado. Se o nome do servidor for uma String vazia (“”), o objeto será criado na máquina local.
As seguintes considerações são válidas para a função CreateObject:
  • Tipo de aplicativo capaz de suportar a automação OLE fornece pelo menos um tipo de objeto. Por exemplo, o Microsoft Excel fornece um objeto Application que por sua vez possui um objeto Sheet (planilha);
  • Para criar um objeto é obrigatório atribuir o objeto retornado a uma variável declarada As Variant, As Object ou As Tipo, onde tipo é o mesmo tipo de objeto a ser criado;
  • Ao declarar uma variável como sendo do tipo Variant ou Object, o acesso aos métodos deste objeto será do tipo tardio (late bound), impedindo o VBA de efetuar verificações de consistência no seu código no momento da compilação;
  • Para permitir o acesso precoce (early bound) à interface do objeto criado, declare uma variável como sendo do mesmo tipo do objeto que ela irá conter. Referências precoces fornecem sempre uma melhor performance na execução do seu código. Note que para criar referências precoces, o projeto atual do VBA deverá ter uma referência explícita ao modelo de objetos que se quer acessar (criada com o comando de menu Ferramentas/Referências do VBA);
  • Ao criar uma referência a um objeto utilizando a função CreateObject, um novo exemplar do servidor daquele objeto será criado na memória do seu computador, independentemente de haver ou não outro exemplar em execução (por exemplo, a cada execução da instrução Obejto = CreateObject(“Excel.Sheet”), um novo exemplar do Excel será aberto);
  • Para referenciar um exemplar de um objeto que já esteja sendo executado na memória do seu computador, empregue a função GetObject;
  • Você pode criar um objeto remoto em um computador servidor de rede, passando para o argumento NomeDoServidor o caminho UNC completo para o servidor. Por exemplo, a expressão \\Servidor\C indica que o nome do computador onde o objeto é criado é “Servidor”. Para fazer com que o aplicativo se torne visível no computador remoto, pode ser necessário adicionar uma entrada no Registo do computador que cria o objeto (consulte a documentação da COM – Component Object Model – do Microsoft Developer Network para maiores informações).

Exemplo: O exemplo a seguir cria uma referência tardia (early bound)) a uma planilha do Microsoft Excel, utilizando a função CreateObject e acessa propriedades e métodos do objeto criado:

Public Sub Teste ()
Dim Planilha As Object
Set Planilha = CreateObject(“Excel.Sheet”)
‘ Torne a Planilha visível
Planilha.Application.Visible = True
‘ Coloque o texto “”VBA” na célula A1
Planilha.Application.Cells (1,1).Value = “VBA”
‘ Obtenha a versão atual do Excel na célula B1
Planilha.Application.Cells (1,2).Value = Planilha.Application.Version
‘ Grave a Panilha e feche o Excel
Planilha.Application.Save “C:\TesteCreateObject.XLS”
Planilha.Application.Quit
‘ Libere a variável de objeto
Set Planilha = Nothing
End Sub

    O próximo exemplo cria uma referência precoce ao modelo de objetos do Microsoft Excel, permitindo ao VBA efetuar verificações de consistência na sintaxe empregada no seu código. Repare nesse caso, é necessário criar uma sucessão de objetos hierárquicos no código, de acordo com a estrutura do modelo de objetos exposto pelo Excel:

Public Teste ()
Dim MSExcel As Excel.Application
Dim PastaDeTrabalho As Excel.Workbook
Dim Planilha As Excel.WorkSheet
Set MSExcel = CreateObject(“Excel.Application”)
Set PastaDeTrabalho = MSExcel.WorkBooks.Add
Set Planilha = PastaDeTrabalho.WorkSheets(1)
‘ Torne o Excel visível
MSExcel.Visible = True
‘ Coloque o texto “”VBA” na célula A1
Planilha.Cells(1,1).Value = “VBA”
‘ Obtenha a versão atual do Excel na célula B1
Planilha.Cells(1,2).Value = MSExcel.Version
‘ Grave a Planilha e feche o Excel
Planilha.SaveAs “C\:TesteCreateObject.XLS”
MSExcel.Quit
‘ Libere a variável de objeto.
Set MSExcel = Nothing
End Sub

Até a Próxima!!

Um comentário: