Applies ToAccess para Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Nota: La función, método, objeto o propiedad descrita en este tema se deshabilita si el Servicio de expresiones de Microsoft Jet se ejecuta en modo de espacio aislado, lo que impide la evaluación de expresiones potencialmente no seguras. Para obtener más información sobre el modo de espacio aislado, busca "modo de espacio aislado" 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 estos argumentos:

Argumento

Descripción

Ruta

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

clase

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

La argumento de clase usa la sintaxis nombre_de_aplicación.tipo_objeto y tiene estas partes:

Parte

Descripción

Appname

Requerido. Variant (String). El nombre de la aplicación que proporciona el objeto.

Objecttype

Requerido. Variant (String). El tipo o la clase de objeto que se va a crear.

Comentarios

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.

Use la función GetObject para obtener acceso a un objeto ActiveX desde un archivo y asignar el objeto a un variable de objeto. Use 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 el nombre de ruta especificado y se activa el objeto en el archivo especificado.

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

Algunas aplicaciones le permiten activar parte de un archivo. Agregue un signo de exclamación (!) al final del nombre de archivo y síguelo con una cadena que identifique 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, en una aplicación de dibujo puede tener varias capas en un dibujo almacenado en un archivo. Puede usar el siguiente código para activar una capa dentro de un dibujo llamado SCHEMA.CAD:

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

Si no especifica la clase del objeto, Automation determina la aplicación que se va a iniciar y el objeto que se va a activar, en función del 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 Drawing y un objeto Toolbar , todos los cuales forman parte del mismo archivo. Para especificar qué objeto de un archivo desea activar, use el argumento de clase opcional. Por ejemplo:

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

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

Una vez activado un objeto, se hace referencia a él en código mediante la variable de objeto que definió. En el ejemplo anterior, se tiene acceso a las 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: Use la función GetObject cuando haya una instancia actual del objeto o si desea crear el objeto con un archivo ya cargado. Si no hay ninguna instancia actual y no desea que el objeto se inicie con un archivo cargado, use la función CreateObject .

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

Ejemplo

En este ejemplo se usa la función GetObject para obtener una referencia a una hoja de cálculo de Excel específica (MyXL). Usa la propiedad Application de la hoja de cálculo para que Excel sea visible, para cerrarlo, etc. Con dos llamadas API, el procedimiento DetectExcel Sub busca Excel y, si se está ejecutando, lo escribe en la tabla de objetos en ejecución. La primera llamada a GetObject provoca un error si Microsoft Excel aún no se está ejecutando. En el ejemplo, el error hace que la marca ExcelWasNotRunning se establezca en True. La segunda llamada a GetObject especifica un archivo para abrir. Si Excel aún 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; De lo contrario, se genera el error de automatización de errores de Visual Basic. A continuación, el código de ejemplo hace visibles tanto Excel como la ventana que contiene la hoja de cálculo especificada. Por último, si no se ejecutó ninguna versión anterior de Excel, el código usa el método Quit del objeto Application para cerrar Excel. Si la aplicación ya se estaba ejecutando, no se intenta cerrarla. La referencia en sí se libera al establecerla en 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

¿Necesita más ayuda?

¿Quiere más opciones?

Explore las ventajas de las suscripciones, examine los cursos de aprendizaje, aprenda a proteger su dispositivo y mucho más.

Las comunidades le ayudan a formular y responder preguntas, enviar comentarios y leer a expertos con conocimientos extensos.