Interaction.CreateObject(String, String) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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.