CreateObject (Función)

Visual Basic VBLR

CreateObject (Función)

       

Crea y devuelve una referencia a un objeto ActiveX.

Sintaxis

CreateObject(clase,[nombre_servidor])

La sintaxis de la función CreateObject contiene tres partes:

Parte Descripción
clase Requerido; Variant (Cadena). El nombre de la aplicación y de la clase del objeto que se va a crear.
nombre_sevidor Opcional; Variant (Cadena).El nombre del servidor de red donde se creará el objeto. Si nombre_servidor es una cadena vacía (""), se utiliza la máquina local.

El argumento clase utiliza la sintaxis nombre_aplicación.tipo_objeto y consta de las siguientes partes:

Parte Descripción
Nombre_
aplicación
Requerido; Variant (String). El nombre de la aplicación que proporciona el objeto.
tipo_
objeto
Requerido; Variant (String). El tipo o clase de objeto que se va a crear.

Comentarios

Cada aplicación que admite Automatización proporciona al menos un tipo de objeto. Por ejemplo, una aplicación de procesador de textos puede proporcionar un objeto Application, un objeto Document y un objeto Toolbar.

Para crear un objeto ActiveX, asigne el objeto devuelto por la función CreateObject a una variable de objeto:

' Declare una variable de objeto para contener la referencia de
' objeto. Dim As Object provoca un enlace en tiempo de ejecución. 
Dim ExcelSheet As Object
Set ExcelSheet = CreateObject("Excel.Hoja")

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, haga referencia a él en el código mediante la variable de objeto que definió. En el siguiente ejemplo tiene acceso a las propiedades y los métodos del nuevo objeto mediante la variable de objeto, ExcelSheet, y otros objetos de Microsoft Excel, incluyendo el objeto Application y la colección Cells.

' Hace visible Excel mediante el objeto Application 
ExcelSheet.Application.Visible = True
' Coloca algún texto en la primera celda de la hoja
ExcelSheet.Application.Cells(1, 1).Value = "Esto es la columna A, fila 1"
' Guarda la hoja en el directorio C:\test.xls
ExcelSheet.SaveAs "C:\ TEST.XLS"
' Cierra Excel con el método Quit en el objeto Application 
ExcelSheet.Application.Quit
' Libera la variable de objeto.
Set ExcelSheet = Nothing

Al declarar una variable de objeto con la cláusula As Object se crea una variable que puede contener una referencia a cualquier tipo de objeto. Sin embargo, el acceso al objeto mediante esta variable es un enlace en tiempo de ejecución, es decir, el enlace se produce cuando se ejecuta el programa. Para crear una variable de objeto que produzca un enlace en tiempo de diseño (es decir, que el enlace se produzca cuando se compile el programa), declare la variable de objeto con un determinado Id. de clase. Por ejemplo, puede declarar y crear las siguientes referencias de Microsoft 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 mediante una variable de enlace en tiempo de diseño puede proporcionar mejor rendimiento, pero sólo puede contener una referencia a la clase especificada en la declaración.

Puede transferir un objeto devuelto por la función CreateObject a una función que espera un objeto como argumento. Por ejemplo, el siguiente código crea y transfiere una referencia al objeto Excel.Application:

Call MiSub (CreateObject("Excel.Application"))

Puede crear un objeto en cualquier PC remoto de red pasando el nombre al argumento servername de CreateObject. Ese nombre es el mismo que la parte Machine Name de un nombre de recurso compartido: para un nombre de recurso compartido "\\MiServidor\Público," servername es "MiServidor."

Nota   Consulte la documentación de COM (vea Microsoft Developer Network) para obtener más información acerca de cómo hacer visible una aplicación o un PC remoto. Puede agregar una clave de registro para su aplicación.

El código siguiente devuelve el número de versión de una instancia de Excel que se ejecuta en un PC remoto llamado MiServidor:

Dim xlApp As Object
Set xlApp = CreateObject("Excel.Application", "MyServidor")
Debug.Print xlApp.Version

Si el servidor remoto no existe o no está disponible, ocurrirá un error en tiempo de ejecución.

Nota   Utilice la función CreateObject cuando no haya ninguna instancia activa del objeto. Si se está ejecutando una instancia del objeto, se iniciará una nueva instancia y se creará un objeto del tipo especificado. Para utilizar la instancia activa o para iniciar la aplicación y que cargue un archivo, utilice la función GetObject.

Si un objeto se ha registrado a sí mismo como un objeto de instancia única, sólo se creará una instancia del objeto, sin tener en cuenta cuántas veces se ejecuta la función CreateObject.