Nota
La función, el método, el objeto o la propiedad descritos en este tema se deshabilitan si el servicio de expresiones de Microsoft Jet se ejecuta en modo de espacio aislado, lo que impide la evaluación de expresiones potencialmente inseguras. Para obtener más información sobre el modo de espacio aislado, busque "modo de espacio aislado" en la Ayuda.
Crea y devuelve una referencia a un objeto ActiveX.
Sintaxis
CreateObject(class [, servername] )
La sintaxis de la función CreateObject consta de los siguientes argumentos:
| Argumento | Descripción |
|---|---|
| clase | Obligatorio. variant (string). El nombre de la aplicación y la clase del objeto que se va a crear. |
| nombre del servidor | Opcional. variant (string). Nombre del servidor de red en el que se creará el objeto. Si servername es una cadena vacía (""), se usa el equipo local. |
El argumento de claseusa la sintaxis appname.objecttype y tiene estas partes:
| Parte | Descripción |
|---|---|
| Nombre de aplicación | Obligatorio. variant (string). El nombre de la aplicación que proporciona el objeto. |
| tipo de objeto | Obligatorio. variant (string). El tipo o clase de objeto que se va a crear. |
Observaciones
Todas las aplicaciones que admiten la automatización proporcionan al menos un tipo de objeto. Por ejemplo, una aplicación de procesamiento de textos puede proporcionar un objeto de aplicación , un objeto de documento y un objeto de barra de herramientas .
Para crear un objeto ActiveX, asigne el objeto devuelto por CreateObject a una variable de objeto:
Nota
Los ejemplos siguientes muestran el uso de esta función en un módulo de Visual Basic para Aplicaciones (VBA). Para obtener más información sobre cómo trabajar con VBA, seleccione referencia para desarrolladores en la lista desplegable situada junto a búsqueda y escriba uno o varios términos en el cuadro de búsqueda.
' Declare an object variable to hold the object
' reference. Dim as Object causes late binding.
Dim ExcelSheet As Object
Set ExcelSheet = CreateObject("Excel.Sheet")
En este ejemplo, automatizaremos un objeto de hoja de cálculo de Excel desde una base de datos de Access. Este código inicia la aplicación creando el objeto, en este caso, una hoja de cálculo de Microsoft Excel. Una vez creado un objeto, se hace referencia a él en el código mediante la variable de objeto que ha definido. En el ejemplo siguiente, accederá a las propiedades y métodos del nuevo objeto mediante la variable ExcelSheetobject , y a otros objetos de Excel, incluidos el objeto y la ApplicationCells colección.
' Make Excel visible through the Application object.
ExcelSheet.Application.Visible = True
' Place some text in the first cell of the sheet.
ExcelSheet.Application.Cells(1, 1).Value = "This is column A, row 1"
' Save the sheet to C:\test.xls directory.
ExcelSheet.SaveAs "C:\TEST.XLS"
' Close Excel with the Quit method on the Application object.
ExcelSheet.Application.Quit
' Release the object variable.
Set ExcelSheet = Nothing
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. Para crear una variable de objeto que dé como resultado un enlace anticipado, es decir, un enlace cuando se compila el programa, declare la variable de objeto con un ID de clase específico. Por ejemplo, puede declarar y crear las siguientes referencias de Excel:
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.WorkSheet
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.Worksheets(1)
La referencia a través de una variable enlazada en tiempo anterior puede proporcionar un mejor rendimiento, pero solo puede contener una referencia a la clase especificada en la declaración.
Puede pasar un objeto devuelto por la función CreateObject a una función esperando un objeto como argumento. Por ejemplo, el código siguiente crea y pasa una referencia a un objeto Excel.Application:
Call MySub (CreateObject("Excel.Application"))
Para crear un objeto en un equipo remoto en red, pase el nombre del equipo al argumento servername de CreateObject. Ese nombre es el mismo que el nombre del equipo de un nombre de recurso compartido: para un recurso compartido denominado "\\MyServer\Public", servername es "MyServer".
Nota
Consulte la documentación COM (consulte Microsoft Developer Network) para obtener información adicional sobre cómo hacer visible una aplicación en un equipo remoto en red. 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:
Dim xlApp As Object
Set xlApp = CreateObject("Excel.Application", "MyServer")
Debug.Print xlApp.Version
Si el servidor remoto no existe o no está disponible, se produce un error en tiempo de ejecución.
Nota
Use CreateObject cuando no haya una instancia actual del objeto. Si una instancia del objeto ya se está ejecutando, se inicia una nueva 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 función GetObject .
Si un objeto se ha registrado a sí mismo como un objeto de instancia única, solo se crea una instancia del objeto, independientemente de cuántas veces se ejecute CreateObject .
Ejemplo
En este ejemplo se usa la función CreateObject para establecer una referencia (
xlApp
) a Excel. Usa la referencia para acceder a la propiedad Visible de Excel y, a continuación, usa el método Salir de Excel para cerrarla. Finalmente, se libera la referencia en sí.
Dim xlApp As Object ' Declare variable to hold the reference.
Set xlApp = CreateObject("excel.application")
' You may have to set Visible property to True
' if you want to see the application.
xlApp.Visible = True
' Use xlApp to access Microsoft Excel's
' other objects.
xlApp.Quit ' When you finish, use the Quit method to close
Set xlApp = Nothing ' the application, then release the reference.