Interaction.CreateObject(String, String) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Cria e devolve uma referência a um objeto COM.
CreateObject não pode ser usado para criar instâncias de classes em Visual Basic a menos que essas classes estejam explicitamente expostas como componentes COM.
public static object CreateObject(string ProgId, string ServerName = "");
static member CreateObject : string * string -> obj
Public Function CreateObject (ProgId As String, Optional ServerName As String = "") As Object
Parâmetros
- ProgId
- String
Required.
String. O ID do programa do objeto a criar.
- ServerName
- String
Optional.
String. O nome do servidor de rede onde o objeto será criado. Se ServerName for uma cadeia vazia (""), utiliza-se o computador local.
Devoluções
Cria e devolve uma referência a um objeto COM.
CreateObject não pode ser usado para criar instâncias de classes em Visual Basic a menos que essas classes estejam explicitamente expostas como componentes COM.
Exceções
O servidor está indisponível
Não existe nenhum objeto do tipo especificado.
Exemplos
O exemplo seguinte utiliza a função CreateObject para criar uma folha de cálculo Microsoft Excel e guarda a folha num ficheiro. Para usar este exemplo, o Excel deve estar instalado no computador onde este programa é executado. Além disso, deve adicionar uma referência à biblioteca de tipos a partir do separador COM da caixa de diálogo Add Reference no menu Project. O nome da biblioteca de tipos varia consoante a versão do Excel instalada no seu computador. Por exemplo, a biblioteca de tipos para Microsoft Excel 2002 chama-se Microsoft Excel 10.0 Object Library.
Sub TestExcel()
Dim xlApp As Microsoft.Office.Interop.Excel.Application
Dim xlBook As Microsoft.Office.Interop.Excel.Workbook
Dim xlSheet As Microsoft.Office.Interop.Excel.Worksheet
xlApp = CType(CreateObject("Excel.Application"),
Microsoft.Office.Interop.Excel.Application)
xlBook = CType(xlApp.Workbooks.Add,
Microsoft.Office.Interop.Excel.Workbook)
xlSheet = CType(xlBook.Worksheets(1),
Microsoft.Office.Interop.Excel.Worksheet)
' The following statement puts text in the second row of the sheet.
xlSheet.Cells(2, 2) = "This is column B row 2"
' The following statement shows the sheet.
xlSheet.Application.Visible = True
' The following statement saves the sheet to the C:\Test.xls directory.
xlSheet.SaveAs("C:\Test.xls")
' Optionally, you can call xlApp.Quit to close the workbook.
End Sub
Observações
Para criar uma instância de um componente COM, atribui o objeto devolvido por CreateObject a uma variável de objeto:
Sub CreateADODB()
Dim adoApp As Object
adoApp = CreateObject("ADODB.Connection")
End Sub
O tipo de variável objeto que usa para armazenar o objeto devolvido pode afetar o desempenho da sua aplicação. Declarar uma variável de objeto com a As Object cláusula cria uma variável que pode conter uma referência a qualquer tipo de objeto. No entanto, o acesso ao objeto através dessa variável é ligado tardiamente, ou seja, a ligação ocorre quando o seu programa é executado. Existem muitas razões para evitar a ligação tardia, incluindo um desempenho de aplicação mais lento.
Pode criar uma variável objeto que resulte em binding precoce – ou seja, binding quando o programa é compilado. Para isso, adicione uma referência à biblioteca de tipos do seu objeto a partir do separador COM da caixa de diálogo Add Reference no menu Project. Depois declara a variável objeto do tipo específico do teu objeto. Na maioria dos casos, é mais eficiente usar a Dim instrução e um assembly de interoperabilidade primária para criar objetos do que usar a CreateObject função.
Interação com Código Não Gerido
Outro problema é que os objetos COM usam código não gerido – código sem o benefício do runtime da linguagem comum. Existe um grau considerável de complexidade envolvido em misturar o código gerido do Visual Basic com código não gerido do COM. Quando adiciona uma referência a um objeto COM, o Visual Basic procura um assembly de interoperação primário (PIA) para essa biblioteca; se encontrar um, então utiliza-o. Se não encontrar um PIA, então cria um assembly de interoperabilidade que contém classes locais de interoperabilidade para cada classe na biblioteca COM. Para obter mais informações, consulte Interoperabilidade COM em aplicativos .NET Framework.
Deves geralmente usar objetos fortemente ligados e conjuntos de interoperabilidade primária sempre que possível. Os exemplos abaixo utilizam a função CreateObject com Microsoft Office objetos apenas para fins de demonstração. No entanto, estes objetos são mais fáceis de usar e mais fiáveis quando usados com o conjunto principal de interoperabilidade apropriado.
Criar um Objeto num Computador Remoto
Pode criar um objeto num computador remoto em rede passando o nome do computador ao ServerName argumento da CreateObject função. Esse nome é o mesmo que a parte de Nome da Máquina de um nome de partilha: para uma partilha chamada "\\MyServer\Public", ServerName é "MyServer."
Note
Consulte a documentação do COM (ver Microsoft Developer Network) para informações adicionais sobre como tornar uma aplicação acessível num computador remoto em rede. Pode precisar de adicionar uma chave de registo para a sua candidatura.
O código seguinte devolve o número da versão de uma instância do Excel em execução num computador remoto com o nome MyServer:
Sub CreateRemoteExcelObj()
Dim xlApp As Object
' Replace string "\\MyServer" with name of the remote computer.
xlApp = CreateObject("Excel.Application", "\\MyServer")
MsgBox(xlApp.Version)
End Sub
Se o nome do servidor remoto estiver incorreto, ou se não estiver disponível, ocorre um erro em tempo de execução.
Note
Use CreateObject quando não existe uma instância atual do objeto. Se uma instância do objeto já estiver em execução, é iniciada uma nova instância e é criado um objeto do tipo especificado. Para usar a instância atual, ou para iniciar a aplicação e fazer com que ela carregue um ficheiro, use a GetObject função. Se um objeto se registar como objeto de instância única, apenas uma instância do objeto é criada, independentemente de quantas CreateObject vezes seja executada.
Criação de Objetos Framework
Só podes usar a CreateObject função para criar um objeto COM. Embora não exista um mecanismo equivalente exato para criar um objeto .NET Framework, o Activator no namespace System contém métodos para criar objetos locais ou remotos. Em particular, o CreateInstance método ou método CreateInstanceFrom pode ser útil.
Importante
A CreateObject função requer permissão de código não gerida, o que pode afetar a sua execução em situações de confiança parcial. Para mais informações, consulte SecurityPermission e Permissões de Acesso ao Código.