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])
- .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:
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
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:
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.