Usar un Rango de otro libro de trabajo

27/09/2003 - 02:15 por Henry Sanchez | Informe spam
Hola Grupo

Les cuento que desde mis complementos, cuando debo buscar
un valor de un rango del libro de trabajo activo uso:

ActiveWorkbook.Names(MiRango).RefersToRange.Value

que me parece un poco largo, pero no conozco otra forma.

Conocen uds otra forma de hacer referencia a un rango de
otro libro de trabajo?

Saludos,

Henry

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
27/09/2003 - 04:36 | Informe spam
Hola, Henry !

... debo buscar un valor de un rango del libro ... activo uso: ActiveWorkbook.Names(MiRango).RefersToRange.Value
... me parece un poco largo ... otra forma de hacer referencia a un rango de otro libro de trabajo?



==> si ['realmente'] quieres hacer referencia a rangos de 'otro' libro, es necesario 'referenciar' [tambien] dicho libro [y hoja] :(
si ['solamente'] necesitas 'traer' el valor de una celda [rango con nombre] del libro activo, entonces...

1) ActiveWorkbook.Names(MiRango).RefersToRange.Value
2) ActiveWorkbook.Names(MiRango).RefersToRange
3) Range(MiRango) =>FALLA si la hoja activa no es una hoja de calculo<
las primeras dos opciones son 'equivalentes', ya que la propiedad .Value es la propiedad 'por defecto' de un objeto Range
la opcion mas 'corta', es usar la propiedad Range SIN 'calificador de objeto', la cual 'equivale' a ActiveSheet.Range ...
[que a su vez es 'parte de' ActiveWorkbook] y al ser el argumento [MiRango] una referencia a un rango con nombre ...
es [como] una 'abreviacion' de las anteriores.
_______
Saludos,
Héctor.
MS-MVP
Respuesta Responder a este mensaje
#2 Henry Sanchez
27/09/2003 - 23:43 | Informe spam
Hola Hector,

Gracias por tu pronta respuesta y parece que si voy a
necesitar referenciar el rango en algunas ocaciones, como
seria el asunto entonces?

Saludos,

Henry

Hola, Henry !

... debo buscar un valor de un rango del libro ...




activo uso: ActiveWorkbook.Names
(MiRango).RefersToRange.Value
... me parece un poco largo ... otra forma de hacer




referencia a un rango de otro libro de trabajo?

==> si ['realmente'] quieres hacer referencia a rangos


de 'otro' libro, es necesario 'referenciar' [tambien]
dicho libro [y hoja] :(
si ['solamente'] necesitas 'traer' el valor de


una celda [rango con nombre] del libro activo, entonces...

1) ActiveWorkbook.Names(MiRango).RefersToRange.Value
2) ActiveWorkbook.Names(MiRango).RefersToRange
3) Range(MiRango) =>FALLA si la hoja activa no es


una hoja de calculo<>
las primeras dos opciones son 'equivalentes', ya


que la propiedad .Value es la propiedad 'por defecto' de
un objeto Range
la opcion mas 'corta', es usar la propiedad Range


SIN 'calificador de objeto', la cual 'equivale' a
ActiveSheet.Range ...
[que a su vez es 'parte de' ActiveWorkbook] y al


ser el argumento [MiRango] una referencia a un rango con
nombre ...
es [como] una 'abreviacion' de las anteriores.
_______
Saludos,
Héctor.
MS-MVP


.

Respuesta Responder a este mensaje
#3 Héctor Miguel
28/09/2003 - 07:09 | Informe spam
Hola Henry !

... si voy a necesitar referenciar el rango en algunas ocaciones, como seria ... entonces?



==> [algunas] 'ideas' para 'devolver' valores en rangos de 'otros' libros =>ABIERTOS<
1) 'pasando' el rango usando referencias del tipo "a1"
a) una sola celda => Workbooks("NombreLibro").Worksheets("NombreHoja").Range("a1") => "A1"
b) una de 'varias' => Workbooks("NombreLibro").Worksheets("NombreHoja").Range("d5:e15").Cells(5, 2) => "E9"
un equivalente => Workbooks("NombreLibro").Worksheets("NombreHoja").Range("d5:e15").Range("b5") => "E9"

2) 'pasando' el rango usando referencia a los nombres 'asignados | creados'
a) nombres 'unicos' => Workbooks("NombreLibro").Names("NombreRango").RefersToRange
[cuando copias una hoja que 'ya tenia' un nombre 'asignado', el metodo anterior 'devuelve' EL PRIMERO solamente]
b) nombres 'repetidos' en diferentes hojas
b.1) => Workbooks("NombreLibro").Worksheets("NombreHoja1").Range("NombreRango1")
b.2) => Workbooks("NombreLibro").Worksheets("NombreHoja2").Range("NombreRango1")

==> [algunas] 'ideas' para 'devolver' valores en rangos de 'otros' libros =>CERRADOS<
1) la manera mas facil [rapida y 'sencilla'] de hacer 'referencias' a libros cerrados =>SIN ABRIRLOS<= es...
CREAR el vinculo 'real' [solo 'temporalmente'] tal como 'aparece' en la barra de formulas un enlace a libros cerrados:
a) el nombre del libro =>INCLUYENDO la ruta y la extension<= se 'delimita' por corchetes '[.]'
b) [si el el caso] el siguiente 'parametro' es el nombre de la hoja
c) el siguiente 'parametro' [referencia al rango o nombre] va 'precedida' por un signo de 'cierre' de admiracion '!'
d) TODA la 'cadena' [despues del signo '=' y hasta ANTES del signo '!'] va 'delimitada' por apostrofos =>'<
'tomando' en cuenta los 'comportamientos' señalados en el punto de los libros abiertos, los siguientes codigos [ejemplos]
'usan' la celda activa para 'depositar' la formula que vincula al libro cerrado [temporalmente] y le 'regresan' su formula
original
[se pueden 'hacer maravillas' con la cadena que resulta al 'construir' la referencia a libros cerrados, como... BuscarV, etc.]

Sub RangoDeLibroCerrado()
Dim Ruta As String, Archivo As String, Hoja As String, Rango As String, Original
Ruta = "C:\Mis documentos\"
Archivo = "Pruebas.xls"
Hoja = "Hoja2"
Rango = "c5"
Original = ActiveCell.Formula
ActiveCell.Formula = "='" & Ruta & "[" & Archivo & "]" & Hoja & "'!" & Rango
MsgBox ActiveCell
ActiveCell.Formula = Original
End Sub

Sub NombreEnLibroCerrado()
Dim Ruta As String, Archivo As String, Nombre As String, Original
Ruta = "C:\Mis documentos\"
Archivo = "Pruebas.xls"
Nombre = "Nombre1"
Original = ActiveCell.Formula
ActiveCell.Formula = "='" & Ruta & Archivo & "'!" & Nombre
MsgBox ActiveCell
ActiveCell.Formula = Original
End Sub

Sub NombreRepetidoEnHojasDeLibroCerrado()
Dim Ruta As String, Archivo As String, Hoja As String, Nombre As String, Original
Ruta = "C:\Mis documentos\"
Archivo = "Pruebas.xls"
Hoja = "Hoja2"
Nombre = "Nombre1"
Original = ActiveCell.Formula
ActiveCell.Formula = "='" & Ruta & "[" & Archivo & "]" & Hoja & "'!" & Nombre
MsgBox ActiveCell
ActiveCell.Formula = Original
End Sub

2) otras 'tecnicas' que se pueden usar son [p.e.] el metodo 'ExecuteExcel4Macro', usar ADO, DAO, etc.
_______
Saludos,
Héctor.
MS-MVP
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida