Interaction.CreateObject(String, String) Método

Definição

Cria e retorna uma referência a um objeto COM. CreateObject não podem ser usados para criar instâncias de classes em Visual Basic, a menos que essas classes sejam 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. A ID do programa do objeto a ser criado.

ServerName
String

Optional. String. O nome do servidor de rede onde o objeto será criado. Se ServerName for uma cadeia de caracteres vazia (""), o computador local será usado.

Retornos

Cria e retorna uma referência a um objeto COM. CreateObject não podem ser usados para criar instâncias de classes em Visual Basic, a menos que essas classes sejam explicitamente expostas como componentes COM.

Exceções

O servidor não está disponível

Nenhum objeto do tipo especificado existe.

Exemplos

O exemplo a seguir usa a função CreateObject para criar uma planilha Microsoft Excel e salva a planilha em um arquivo. Para usar este exemplo, Excel deve ser instalado no computador em que este programa é executado. Além disso, você deve adicionar uma referência à biblioteca de tipos da guia COM da caixa de diálogo Add Reference no menu Project. O nome da biblioteca de tipos varia dependendo da versão de Excel instalada no computador. Por exemplo, a biblioteca de tipos para Microsoft Excel 2002 é denominada Microsoft Excel biblioteca de objetos 10.0.

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

Comentários

Para criar uma instância de um componente COM, atribua o objeto retornado por CreateObject uma variável de objeto:

Sub CreateADODB()
   Dim adoApp As Object
   adoApp = CreateObject("ADODB.Connection")
End Sub

O tipo de variável de objeto que você usa para armazenar o objeto retornado pode afetar o desempenho do aplicativo. 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 por meio dessa variável está associado tardiamente, ou seja, a associação ocorre quando o programa é executado. Há muitos motivos pelos quais você deve evitar a associação tardia, incluindo o desempenho mais lento do aplicativo.

Você pode criar uma variável de objeto que resulta em associação inicial, ou seja, associação quando o programa é compilado. Para fazer isso, adicione uma referência à biblioteca de tipos do objeto da guia COM da caixa de diálogo Add Reference no menu Project. Em seguida, declare a variável de objeto do tipo específico do objeto. Na maioria dos casos, é mais eficiente usar a Dim instrução e um assembly de interoperabilidade primário para criar objetos do que usar a CreateObject função.

Interagindo com código não gerenciado

Outro problema é que os objetos COM usam código não gerenciado – código sem o benefício do common language runtime. Há um certo grau de complexidade envolvido na combinação do código gerenciado de Visual Basic com código não gerenciado de COM. Quando você adiciona uma referência a um objeto COM, Visual Basic pesquisa um PIA (assembly de interoperabilidade primário) para essa biblioteca; se ela encontrar uma, ela a usará. Se ele não encontrar um PIA, ele criará um assembly de interoperabilidade que contém classes de interoperabilidade locais para cada classe na biblioteca COM. Para obter mais informações, consulte Interoperabilidade COM em aplicativos .NET Framework.

Geralmente, você deve usar objetos fortemente associados e assemblies de interoperabilidade primários sempre que possível. Os exemplos a seguir usam a função CreateObject com objetos Microsoft Office somente para fins de demonstração. No entanto, esses objetos são mais fáceis de usar e mais confiáveis quando usados com o assembly de interoperabilidade primário apropriado.

Criando um objeto em um computador remoto

Você pode criar um objeto em um computador em rede remota passando o nome do computador para o ServerName argumento da CreateObject função. Esse nome é o mesmo que a parte Nome do Computador de um nome de compartilhamento: para um compartilhamento chamado "\\MyServer\Public", ServerName é "MyServer".

Observação

Consulte a documentação com (consulte Microsoft Developer Network) para obter informações adicionais sobre como tornar um aplicativo acessível em um computador de rede remota. Talvez seja necessário adicionar uma chave do Registro para seu aplicativo.

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 ele estiver indisponível, ocorrerá um erro em tempo de execução.

Observação

Use CreateObject quando não houver nenhuma 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 iniciar o aplicativo e fazer com que ele carregue um arquivo, use a GetObject função. Se um objeto tiver se registrado como um objeto de instância única, apenas uma instância do objeto será criada, não importa quantas vezes CreateObject seja executada.

Criando objetos da estrutura

Você pode usar a CreateObject função apenas para criar um objeto COM. Embora não haja 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 o CreateInstanceFrom método pode ser útil.

Importante

A CreateObject função requer permissão de código não gerenciada, o que pode afetar sua execução em situações de confiança parcial. Para obter mais informações, consulte SecurityPermission e permissões de acesso ao código.

Aplica-se a

Confira também