Compartilhar via


Interaction.CreateObject(String, String) Método

Definição

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

public static object CreateObject (string ProgId, string? ServerName = "");
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static object CreateObject (string ProgId, string? ServerName = "");
public static object CreateObject (string ProgId, string ServerName = "");
static member CreateObject : string * string -> obj
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member CreateObject : string * string -> obj
Public Function CreateObject (ProgId As String, Optional ServerName As String = "") As Object

Parâmetros

ProgId
String

Obrigatórios. String. A ID do programa do objeto a ser criado.

ServerName
String

Opcional. String. O nome do servidor de rede no qual 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 pode ser usado para criar instâncias de classes no Visual Basic, a menos que essas classes sejam explicitamente expostas como componentes COM.

Atributos

Exceções

Servidor não disponível

Não existe nenhum objeto do tipo especificado.

Exemplos

O exemplo a seguir usa a CreateObject função para criar uma planilha do Microsoft Excel e salva a planilha em um arquivo. Para usar este exemplo, o 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 Adicionar Referência no menu Projeto . O nome da biblioteca de tipos varia dependendo da versão do Excel instalada em seu computador. Por exemplo, a biblioteca de tipos do Microsoft Excel 2002 é denominada Biblioteca de Objetos do Microsoft Excel 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 a 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 é 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 Adicionar Referência no menu Projeto . 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 do Visual Basic com o código não gerenciado do COM. Quando você adiciona uma referência a um objeto COM, o Visual Basic procura um PIA (assembly de interoperabilidade) primário para essa biblioteca; se encontrar um, ele o 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 CreateObject função com objetos do Microsoft Office apenas 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 remoto em rede 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 COM (consulte Microsoft Developer Network) para obter informações adicionais sobre como tornar um aplicativo acessível em um computador remoto em rede. Talvez seja necessário adicionar uma chave do Registro para seu aplicativo.

O código a seguir retorna o número de versão de uma instância do Excel em execução em um computador remoto chamado 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, 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, uma nova instância será iniciada e um objeto do tipo especificado será criado. Para usar a instância atual ou para 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 de estrutura

Você pode usar a CreateObject função somente para criar um objeto COM. Embora não haja um mecanismo equivalente exato para criar um objeto .NET Framework, o ActivatorSystem no namespace 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 de Código.

Aplica-se a

Confira também