Comparteix a través de


Interaction.CreateObject(String, String) Método

Definición

Crea y devuelve una referencia a un objeto COM. CreateObject no se puede utilizar para crear instancias de clases en Visual Basic, a menos que dichas clases se expongan explícitamente 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

Obligatorio. String. Id. de programa del objeto que se va a crear.

ServerName
String

Opcional. String. Nombre del servidor de red donde se va a crear el objeto. Si ServerName es una cadena vacía (""), se utiliza el equipo local.

Devoluciones

Crea y devuelve una referencia a un objeto COM. CreateObject no se puede utilizar para crear instancias de clases en Visual Basic, a menos que dichas clases se expongan explícitamente como componentes COM.

Atributos

Excepciones

El servidor no está disponible.

No existe ningún objeto del tipo especificado.

Ejemplos

En el ejemplo siguiente se usa la CreateObject función para crear una hoja de cálculo de Microsoft Excel y se guarda la hoja de cálculo en un archivo. Para usar este ejemplo, Excel debe instalarse en el equipo donde se ejecuta este programa. Además, debe agregar una referencia a la biblioteca de tipos desde la pestaña COM del cuadro de diálogo Agregar referencia en el menú Proyecto . El nombre de la biblioteca de tipos varía en función de la versión de Excel instalada en el equipo. Por ejemplo, la biblioteca de tipos para Microsoft Excel 2002 se denomina Biblioteca de objetos de 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

Comentarios

Para crear una instancia de un componente COM, asigne el objeto devuelto por CreateObject a una variable de objeto:

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

El tipo de variable de objeto que se usa para almacenar el objeto devuelto puede afectar al rendimiento de la aplicación. Al declarar una variable de objeto con la As Object cláusula se crea una variable que puede contener una referencia a cualquier tipo de objeto. Sin embargo, el acceso al objeto a través de esa variable está enlazado en tiempo de ejecución, es decir, el enlace se produce cuando se ejecuta el programa. Hay muchas razones por las que debe evitar el enlace en tiempo de ejecución, incluido el rendimiento más lento de la aplicación.

Puede crear una variable de objeto que da como resultado un enlace anticipado, es decir, enlazar cuando se compila el programa. Para ello, agregue una referencia a la biblioteca de tipos del objeto desde la pestaña COM del cuadro de diálogo Agregar referencia en el menú Proyecto . A continuación, declare la variable de objeto del tipo específico del objeto. En la mayoría de los casos, es más eficaz usar la Dim instrucción y un ensamblado de interoperabilidad primario para crear objetos que para usar la CreateObject función .

Interacción con código no administrado

Otro problema es que los objetos COM usan código no administrado: código sin la ventaja de Common Language Runtime. Hay un grado justo de complejidad implicado en la combinación del código administrado de Visual Basic con código no administrado de COM. Cuando se agrega una referencia a un objeto COM, Visual Basic busca un ensamblado de interoperabilidad primario (PIA) para esa biblioteca; si encuentra una, la usa. Si no encuentra un PIA, crea un ensamblado de interoperabilidad que contiene clases de interoperabilidad locales para cada clase de la biblioteca COM. Para más información, consulte Interoperabilidad COM en aplicaciones de .NET Framework.

Por lo general, debe usar objetos fuertemente enlazados y ensamblados de interoperabilidad primarios siempre que sea posible. En los ejemplos siguientes se usa la CreateObject función con objetos de Microsoft Office solo con fines de demostración. Sin embargo, estos objetos son más fáciles de usar y más confiables cuando se usan con el ensamblado de interoperabilidad primario adecuado.

Crear un objeto en un equipo remoto

Puede crear un objeto en un equipo en red remoto pasando el nombre del equipo al ServerName argumento de la CreateObject función. Ese nombre es el mismo que la parte Nombre de la máquina de un nombre de recurso compartido: para un recurso compartido denominado "\\MyServer\Public", ServerName es "MyServer".

Nota

Consulte la documentación de COM (consulte Microsoft Developer Network) para obtener información adicional sobre cómo hacer que una aplicación sea accesible en un equipo en red remoto. Es posible que tenga que agregar una clave del Registro para la aplicación.

El código siguiente devuelve el número de versión de una instancia de Excel que se ejecuta en un equipo remoto denominado 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  

Si el nombre del servidor remoto es incorrecto o si no está disponible, se produce un error en tiempo de ejecución.

Nota

Use CreateObject cuando no haya ninguna instancia actual del objeto. Si ya se está ejecutando una instancia del objeto, se inicia una nueva instancia y se crea un objeto del tipo especificado. Para usar la instancia actual o para iniciar la aplicación y hacer que cargue un archivo, use la GetObject función . Si un objeto se ha registrado como un objeto de instancia única, solo se crea una instancia del objeto, independientemente de cuántas veces CreateObject se ejecute.

Creación de objetos framework

Solo puede usar la CreateObject función para crear un objeto COM. Aunque no hay ningún mecanismo equivalente exacto para crear un objeto de .NET Framework, el Activator en el System espacio de nombres contiene métodos para crear objetos locales o remotos. En concreto, el CreateInstance método o el CreateInstanceFrom método pueden ser útiles.

Importante

La CreateObject función requiere permiso de código no administrado, lo que podría afectar a su ejecución en situaciones de confianza parcial. Para obtener más información, vea SecurityPermission y Permisos de acceso del código.

Se aplica a

Consulte también