GetObject (función)

Importante:  Este artículo se ha traducido con traducción automática; vea la declinación de responsabilidades. Para su referencia, puede encontrar la versión en inglés de este artículo aquí.

Nota: La función, el método, el objeto o la propiedad descritas en este tema se desactiva si se está ejecutando el servicio de expresión Microsoft Jet en modo de recinto de seguridad, lo que evita la evaluación de expresiones potencialmente no seguras. Para obtener más información sobre el modo de recinto de seguridad, busque "modo de recinto de seguridad" en la Ayuda.

Devuelve una referencia a un objeto proporcionado por un componente ActiveX.

Sintaxis

GetObject ([nombre de ruta ] [, clase ] )

La sintaxis de la función GetObject tiene los siguientes argumentos:

Argumento

Descripción

ruta de acceso

Opcional. Variant (Cadena). La ruta de acceso completa y el nombre del archivo que contiene el objeto para recuperar. Si se omite la ruta de acceso , se requiere la clase .

clase

Opcional. Variant (Cadena). Una cadena que representa la clase del objeto.


La claseargumento utiliza la sintaxis de la aplicación.ObjectType y tiene las siguientes partes:

Parte

Descripción

nombre de aplicación

Obligatorio. Variant (Cadena). El nombre de la aplicación que proporciona el objeto.

ObjectType

Obligatorio. Variant (Cadena). Tipo o clase del objeto a crear.


Comentarios

Nota: Los ejemplos siguientes muestran el uso de esta función en un Visual Basic para aplicaciones (VBA). Para obtener más información sobre cómo trabajar con VBA, seleccione la Referencia del programador en la lista desplegable situada junto a Buscar y escriba uno o varios términos en el cuadro de búsqueda.

Utilice la función GetObject para tener acceso a un objeto ActiveX desde un archivo y asignar el objeto a un variable de objeto. Utilice la instrucción Set para asignar el objeto devuelto por GetObject a la variable de objeto. Por ejemplo:

Dim CADObject As Object
Set CADObject = GetObject("C:\CAD\SCHEMA.CAD")

Cuando se ejecuta este código, se inicia la aplicación asociada con la ruta de acceso y se activa el objeto en el archivo especificado.

Si la ruta de acceso es una cadena de longitud cero (""), GetObject devuelve una nueva instancia de objeto del tipo especificado. Si se omite el argumento de ruta de acceso , GetObject devuelve un objeto actualmente activo del tipo especificado. Si no existe un objeto del tipo especificado, se produce un error.

Algunas aplicaciones permiten activar parte de un archivo. Agregue un signo de exclamación (!)al final del nombre de archivo y siga con una cadena que identifica la parte del archivo que desea activar. Para obtener información sobre cómo crear esta cadena, consulte la documentación de la aplicación que creó el objeto.

Por ejemplo, es posible que tenga varias capas para un dibujo almacenado en un archivo en una aplicación de dibujo. Puede utilizar el código siguiente para activar una capa dentro de un dibujo denominado SCHEMA.CAD:

Set LayerObject = GetObject("C:\CAD\SCHEMA.CAD!Layer3")

Si no especifica la del objeto clase, la automatización determina que se inicie la aplicación y el objeto a activar, basándose en el nombre de archivo que proporcione. Sin embargo, algunos archivos pueden admitir más de una clase de objeto. Por ejemplo, un dibujo podría admitir tres tipos diferentes de objetos: un objeto Application , un objeto de dibujo y un objeto de la barra de herramientas , que forman parte del mismo archivo. Para especificar qué objeto en un archivo que desea activar, utilice el argumento opcional clase . Por ejemplo:

Dim MyObject As Object
Set MyObject = GetObject("C:\DRAWINGS\SAMPLE.DRW", _
"FIGMENT.DRAWING")

En el ejemplo, FIGMENT es que el nombre de una aplicación de dibujo y DRAWING es uno de los tipos de objeto que admite.

Una vez que se activa un objeto, la referencia en el código mediante la variable de objeto que haya definido. En el ejemplo anterior, puede acceso a propiedades y métodos del nuevo objeto mediante la variable de objeto MyObject. Por ejemplo:

MyObject.Line 9, 90
MyObject.InsertText 9, 100, "Hello, world."
MyObject.SaveAs "C:\DRAWINGS\SAMPLE.DRW"

Nota: Utilice la función GetObject cuando hay una instancia actual del objeto o si desea crear el objeto con un archivo cargado. Si no hay ninguna instancia actual y no desea iniciar el objeto con un archivo cargado, utilice la función CreateObject .

Si un objeto se registró como un objeto de instancia única, no se crea una única instancia del objeto, importar cuántas veces se ejecute CreateObject . Con un objeto de instancia única, GetObject siempre devuelve la misma instancia cuando se llama con la cadena de longitud cero ("") provoca un error de sintaxis y, si se omite el argumento de ruta de acceso . No se puede utilizar GetObject para obtener una referencia a una clase creada con Visual Basic.

Ejemplo

Este ejemplo usa la función GetObject para obtener una referencia a una hoja de cálculo específicas Microsoft Office Excel 2007 (MyXL). Se utiliza la propiedad de aplicación de la hoja de cálculo para que Excel sea visible, para cerrarla y así sucesivamente. Con dos llamadas a la API, el procedimiento Sub de DetectExcel busca Excel y si se está ejecutando, lo especifica en la tabla de objetos de ejecución. La primera llamada a GetObject produce un error si no se está ejecutando Microsoft Excel. En el ejemplo, el error hace que el indicador ExcelWasNotRunning se establece en True. La segunda llamada a GetObject especifica un archivo para abrirlo. Si Excel no se está ejecutando, la segunda llamada lo inicia y devuelve una referencia a la hoja de cálculo representada por el archivo especificado, mytest.xls. El archivo debe existir en la ubicación especificada; en caso contrario, se genera el error de automatización de Visual Basic. A continuación, el código de ejemplo hace Excel y la ventana que contiene la hoja de cálculo especificada. Por último, si no ha habido ninguna versión anterior de Excel ejecuta, el código utiliza método detQuidel objeto Application para cerrar Excel. Si ya se ejecuta la aplicación, se realiza ningún intento para cerrarla. La misma referencia se libera estableciendo a nada.

' Declare necessary API routines:
Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName as String, _
ByVal lpWindowName As Long) As Long
Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hWnd as Long,ByVal wMsg as Long, _
ByVal wParam as Long, _
ByVal lParam As Long) As Long
Sub GetExcel()
Dim MyXL As Object ' Variable to hold reference
' to Microsoft Excel.
Dim ExcelWasNotRunning As Boolean ' Flag for final release.
' Test to see if there is a copy of Microsoft Excel already running.
On Error Resume Next ' Defer error trapping.
' GetObject function called without the first argument returns a
' reference to an instance of the application. If the application isn't
' running, an error occurs.
Set MyXL = GetObject(, "Excel.Application")
If Err.Number <> 0 Then ExcelWasNotRunning = True
Err.Clear ' Clear Err object in case error occurred.
' Check for Microsoft Excel. If Microsoft Excel is running,
' enter it into the Running Object table.
DetectExcel
' Set the object variable to reference the file you want to see.
Set MyXL = GetObject("c:\vb4\MYTEST.XLS")
' Show Microsoft Excel through its Application property. Then
' show the actual window containing the file using the Windows
' collection of the MyXL object reference.
MyXL.Application.Visible = True
MyXL.Parent.Windows(1).Visible = True
Do manipulations of your file here.
' ...
' If this copy of Microsoft Excel was not running when you
' started, close it using the Application property's Quit method.
' Note that when you try to quit Microsoft Excel, the
' title bar blinks and a message is displayed asking if you
' want to save any loaded files.
If ExcelWasNotRunning = True Then
MyXL.Application.Quit
End IF
Set MyXL = Nothing ' Release reference to the
' application and spreadsheet.
End Sub
Sub DetectExcel()
' Procedure dectects a running Excel and registers it.
Const WM_USER = 1024
Dim hWnd As Long
' If Excel is running this API call returns its handle.
hWnd = FindWindow("XLMAIN", 0)
If hWnd = 0 Then ' 0 means Excel not running.
Exit Sub
Else
' Excel is running so use the SendMessage API
' function to enter it in the Running Object Table.
SendMessage hWnd, WM_USER + 18, 0, 0
End If
End Sub

Nota: Declinación de responsabilidades de traducción automática: Este artículo se ha traducido con un sistema informático sin intervención humana. Microsoft ofrece estas traducciones automáticas para que los hablantes de otros idiomas distintos del inglés puedan disfrutar del contenido sobre los productos, los servicios y las tecnologías de Microsoft. Puesto que este artículo se ha traducido con traducción automática, es posible que contenga errores de vocabulario, sintaxis o gramática.

Ampliar sus conocimientos
Explorar los cursos
Obtener nuevas características primero
Únase a los participantes de Office Insider

¿Le ha sido útil esta información?

¡Gracias por sus comentarios!

Gracias por sus comentarios. Quizá le interese ponerse en contacto con uno de nuestros agentes de soporte de Office.

×