0% encontró este documento útil (0 votos)
10 vistas6 páginas

Uso de GetObject en VBA

La función GetObject devuelve una referencia a un objeto ActiveX proporcionado por un componente. Tiene dos argumentos opcionales: el nombre de ruta del archivo que contiene el objeto, y la clase del objeto. GetObject se usa para acceder a objetos desde archivos o para crear nuevas instancias del objeto especificado. En el ejemplo, se obtiene una referencia a una hoja de trabajo de Excel específica mediante GetObject y se manipula la aplicación de Excel y la hoja de trabajo.

Cargado por

Ricardo PC
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
10 vistas6 páginas

Uso de GetObject en VBA

La función GetObject devuelve una referencia a un objeto ActiveX proporcionado por un componente. Tiene dos argumentos opcionales: el nombre de ruta del archivo que contiene el objeto, y la clase del objeto. GetObject se usa para acceder a objetos desde archivos o para crear nuevas instancias del objeto especificado. En el ejemplo, se obtiene una referencia a una hoja de trabajo de Excel específica mediante GetObject y se manipula la aplicación de Excel y la hoja de trabajo.

Cargado por

Ricardo PC
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Función GetObject

 12/12/2018
 6 minutos para leer

o

 
o

 
o

 
o

 
o

 
o +1

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 con nombre :

SINTAX
Parte Descripción
nombre de Opcional; Variante ( cadena ). La ruta completa y el nombre del archivo que contiene el objet
ruta recuperar. Si se omite el nombre de la ruta , se requiere la clase .
clase Opcional; Variante ( cadena ). Una cadena que representa la clase del objeto.

El argumento de la clase usa la sintaxis appname . objecttype y tiene estas


partes:

TABL
Parte Descripción
nombre de la Necesario; Variante ( cadena ). El nombre de la aplicación que proporciona el
aplicación objeto.
tipo de objeto Necesario; Variante ( cadena ). El tipo o clase de objeto que se va a crear.

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

VBCopiar
Dim CADObject As Object
Set CADObject = GetObject("C:\CAD\[Link]")

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 el nombre de ruta es una cadena de longitud cero (""), GetObject devuelve


una nueva instancia de objeto del tipo especificado. Si se omite el
argumento del nombre de ruta , GetObject devuelve un objeto actualmente
activo 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 del archivo y siga 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 [Link]:

VBCopiar
Set LayerObject = GetObject("C:\CAD\[Link]!Layer3")

Si no especifica la clase del objeto , la automatización determina la aplicación


que se iniciará y el objeto que se activará, según el nombre de archivo que
proporcione. Sin embargo, algunos archivos pueden admitir más de una clase
de objeto. Por ejemplo, un dibujo puede admitir tres tipos diferentes de
objetos: un objeto Aplicación , un objeto Dibujo y un objeto Barra de
herramientas , todos los cuales forman parte del mismo archivo. Para
especificar qué objeto en un archivo desea activar, use el argumento
de clase opcional . Por ejemplo:

VBCopiar
Dim MyObject As Object
Set MyObject = GetObject("C:\DRAWINGS\[Link]", "[Link]")

En el ejemplo, FIGMENTes el nombre de una aplicación de dibujo y DRAWINGes uno


de los tipos de objetos que admite. Una vez que se activa un objeto, se hace
referencia a él en el código utilizando la variable de objeto que definió. En el
ejemplo anterior, accede a las propiedades y métodos del nuevo objeto
mediante la variable de objeto MyObject . Por ejemplo:

VBCopiar
[Link] 9, 90
[Link] 9, 100, "Hello, world."
[Link] "C:\DRAWINGS\[Link]"
 Nota

Utilice 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 una 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, sin importar 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 de nombre de
ruta . No puede usar 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 trabajo específica de Microsoft Excel ( MyXL). Utiliza la propiedad Application
de la hoja de trabajo para hacer visible Microsoft Excel, cerrarlo, etc.

Con dos llamadas a la API, el procedimiento DetectExcel Sub busca Microsoft


Excel y, si se está ejecutando, lo ingresa 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 ExcelWasNotRunningbandera
se establezca en Verdadero .

La segunda llamada a GetObject especifica un archivo para abrir. Si Microsoft


Excel aún no se está ejecutando, la segunda llamada lo inicia y devuelve una
referencia a la hoja de trabajo representada por el archivo especificado,
[Link]. El archivo debe existir en la ubicación especificada; de lo
contrario, Automation errorse genera el error de Visual Basic .

A continuación, el código de ejemplo hace visibles tanto Microsoft Excel como


la ventana que contiene la hoja de trabajo especificada. Por último, si no se
estaba ejecutando una versión anterior de Microsoft Excel, el código usa
el método Quit del objeto Aplicación para cerrar Microsoft Excel. Si la
aplicación ya se estaba ejecutando, no se intenta cerrarla. La referencia en sí se
libera configurándola en Nothing .

VBCopiar
' 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(, "[Link]")
If [Link] <> 0 Then ExcelWasNotRunning = True
[Link] ' 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\[Link]")

' Show Microsoft Excel through its Application property. Then


' show the actual window containing the file using the Windows
' collection of the MyXL object reference.
[Link] = True
[Link](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
[Link]
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

También podría gustarte