Interaction.CreateObject(String, String) Método

Definición

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

ServerName
String

Optional. String. El nombre del servidor de red donde se creará el objeto. Si ServerName es una cadena vacía (""), se usa el equipo local.

Devoluciones

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

Excepciones

El servidor no está disponible

No existe ningún objeto del tipo especificado.

Ejemplos

En el ejemplo siguiente se usa la función CreateObject para crear una hoja de cálculo de Microsoft Excel y guardar 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 el cuadro de diálogo COM de la Agregar referencia en el menú Project. 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 de Microsoft Excel 2002 se denomina 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

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 el cuadro de diálogo COM de la Agregar referencia en el menú Project. 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 principal 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 mezclar el código administrado de Visual Basic con código no administrado de COM. Al agregar una referencia a un objeto COM, Visual Basic busca un ensamblado de interoperabilidad primario (PIA) para esa biblioteca; si encuentra uno, lo 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 obtener 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 función CreateObject con objetos 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 principal 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 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 de marco

Puede usar la CreateObject función solo para crear un objeto COM. Aunque no hay ningún mecanismo equivalente exacto para crear un objeto .NET Framework, el Activator en el espacio de nombres /System 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, que podría afectar a su ejecución en situaciones de confianza parcial. Para obtener más información, consulte SecurityPermission y Permisos de acceso de código.

Se aplica a

Consulte también