Problema funcion "ExtraerDeArchivo" con "ExecuteExcel4Macro"

24/10/2007 - 11:31 por Josep | Informe spam
He escrito una funcion que he visto para resolver el INDIRECTO para libros
cerrados (escrita por Miguel Angel, por cierto un crack).

El problema que tengo es que quiero usar la funcion "ExtraerDeArchivo"
directamente en la celda pero no me funciona.
CELDA = ExtraerDeArchivo($G$3;$B$8;"Datos";B10)
(para el directorio y archivo utilizo el valor de una celda)
FUNCION
Function ExtraerDeArchivo( _
ByVal DelDirectorio As String, _
ByVal DelArchivo As String, _
ByVal DeLaHoja As String, _
ByVal DeLaReferencia As String)
Dim TomarDe As String
If Right(DelDirectorio, 1) <> "\" Then DelDirectorio = DelDirectorio & "\"
TomarDe = "'" & DelDirectorio & "[" & DelArchivo & "]" & DeLaHoja & "'!" & _
Range(DeLaReferencia).Range("a1").Address(, , xlR1C1)
ExtraerDeArchivo = ExecuteExcel4Macro(TomarDe)
End Function

Gracias por adelantado!!

Preguntas similare

Leer las respuestas

#1 marioathanasiadis
24/10/2007 - 20:34 | Informe spam
On 24 oct, 04:31, Josep wrote:
He escrito una funcion que he visto para resolver el INDIRECTO para libros
cerrados (escrita por Miguel Angel, por cierto un crack).

El problema que tengo es que quiero usar la funcion "ExtraerDeArchivo"
directamente en la celda pero no me funciona.
CELDA = ExtraerDeArchivo($G$3;$B$8;"Datos";B10)
(para el directorio y archivo utilizo el valor de una celda)
FUNCION
Function ExtraerDeArchivo( _
ByVal DelDirectorio As String, _
ByVal DelArchivo As String, _
ByVal DeLaHoja As String, _
ByVal DeLaReferencia As String)
Dim TomarDe As String
If Right(DelDirectorio, 1) <> "\" Then DelDirectorio = DelDirectorio & "\"
TomarDe = "'" & DelDirectorio & "[" & DelArchivo & "]" & DeLaHoja & "'!" & _
Range(DeLaReferencia).Range("a1").Address(, , xlR1C1)
ExtraerDeArchivo = ExecuteExcel4Macro(TomarDe)
End Function

Gracias por adelantado!!



para utilizar una funcion en una celda debes llamarla a travez de un
evento
esto es programacion en excel
click en el nombre de la hoja con el boton derecho le das ver codigo
y le creas un procedimiento sub en el evento al activar por ejemplo o
alcambiar
en el procedimiento llamas la funcion escribiendo su nombre o
utilizando call
cuando ocurra el evento correra la funcion
es cuestion de escoger el evento adecuado
Respuesta Responder a este mensaje
#2 Héctor Miguel
25/10/2007 - 01:25 | Informe spam
hola, Josep !

... una funcion que he visto para resolver el INDIRECTO para libros cerrados...


... que quiero usar la funcion "ExtraerDeArchivo" directamente en la celda pero no me funciona...

el detalle esta en que a toda funcion posible de usar en formulas en las hojas de calculo
les esta "prohibido" el uso de toda "accion" que pudiera modificar el entorno y/o las propiedades de "otros" objetos
(ajenos a la celda donde se esta utilizando la formula/funcion/... AUN para las funciones integradas de excel)

dado que el metodo "ExecuteExcel4Macro" es (potencialmente) un "modificador de propiedades"
puesto que a traves de el se podria ejecutar cualquier macro del viejo formato de excel v-4...
"cae" dentro de las acciones prohibidas a funciones (aun definidas por el usuario) que se pueden llamar desde las celdas :-((

la solucion es usar macros (reales) p.e.:
- aprovechando los eventos de la hoja para ejecutar la funcion
- y depositando el resultado (o un vinculo) de "la consulta" al archivo cerrado en la celda "X" (o rango de celdas)

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ la consulta original __
CELDA = ExtraerDeArchivo($G$3;$B$8;"Datos";B10)
(para el directorio y archivo utilizo el valor de una celda)
FUNCION
Function ExtraerDeArchivo( _
ByVal DelDirectorio As String, _
ByVal DelArchivo As String, _
ByVal DeLaHoja As String, _
ByVal DeLaReferencia As String)
Dim TomarDe As String
If Right(DelDirectorio, 1) <> "\" Then DelDirectorio = DelDirectorio & "\"
TomarDe = "'" & DelDirectorio & "[" & DelArchivo & "]" & DeLaHoja & "'!" & _
Range(DeLaReferencia).Range("a1").Address(, , xlR1C1)
ExtraerDeArchivo = ExecuteExcel4Macro(TomarDe)
End Function
Respuesta Responder a este mensaje
#3 Josep
25/10/2007 - 15:11 | Informe spam
Me lo temía, Héctor!! Muchas gracias de todos modos.
El problema es que dicha formula la he de utilizar en bastantes celdas, no
sé si se te ocurre otra solución, a parte del INDIRECT.EXT de Laurent Longre,
pero la verdad es que no quería instalar ningún complemento para evitar
problemas futuros.

Mario, como le decía a Héctor el problema es que tengo que usarla en
bastantes celdas pero si se te ocurre otra solución, perfecto.
Como decías al evento que me parecía más adecuado es el CALCuLATE pues creo
que lo usará siempre, pero debería reseguir todas las celdas con dicha
formula y actualizarla con un procedimiento SUB.
De todos modos muchas gracias Mario!!


"Héctor Miguel" wrote:

hola, Josep !

> ... una funcion que he visto para resolver el INDIRECTO para libros cerrados...
que quiero usar la funcion "ExtraerDeArchivo" directamente en la celda pero no me funciona...

el detalle esta en que a toda funcion posible de usar en formulas en las hojas de calculo
les esta "prohibido" el uso de toda "accion" que pudiera modificar el entorno y/o las propiedades de "otros" objetos
(ajenos a la celda donde se esta utilizando la formula/funcion/... AUN para las funciones integradas de excel)

dado que el metodo "ExecuteExcel4Macro" es (potencialmente) un "modificador de propiedades"
puesto que a traves de el se podria ejecutar cualquier macro del viejo formato de excel v-4...
"cae" dentro de las acciones prohibidas a funciones (aun definidas por el usuario) que se pueden llamar desde las celdas :-((

la solucion es usar macros (reales) p.e.:
- aprovechando los eventos de la hoja para ejecutar la funcion
- y depositando el resultado (o un vinculo) de "la consulta" al archivo cerrado en la celda "X" (o rango de celdas)

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ la consulta original __
> CELDA = ExtraerDeArchivo($G$3;$B$8;"Datos";B10)
> (para el directorio y archivo utilizo el valor de una celda)
> FUNCION
> Function ExtraerDeArchivo( _
> ByVal DelDirectorio As String, _
> ByVal DelArchivo As String, _
> ByVal DeLaHoja As String, _
> ByVal DeLaReferencia As String)
> Dim TomarDe As String
> If Right(DelDirectorio, 1) <> "\" Then DelDirectorio = DelDirectorio & "\"
> TomarDe = "'" & DelDirectorio & "[" & DelArchivo & "]" & DeLaHoja & "'!" & _
> Range(DeLaReferencia).Range("a1").Address(, , xlR1C1)
> ExtraerDeArchivo = ExecuteExcel4Macro(TomarDe)
> End Function



Respuesta Responder a este mensaje
#4 Héctor Miguel
25/10/2007 - 20:06 | Informe spam
hola, Josep !

... no se si se te ocurre otra solucion, a parte del INDIRECT.EXT de Laurent Longre
... no queria instalar ningun complemento para evitar problemas futuros...



(p.e.)
la solucion es usar macros (reales) p.e.:
- aprovechando los eventos de la hoja para ejecutar la funcion
- y depositando el resultado (o un vinculo) de "la consulta" al archivo cerrado en la celda "X" (o rango de celdas)

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#5 Josep
29/10/2007 - 10:58 | Informe spam
Hola Hector,

Te explico como lo he solucionado y creo que me funciona OK.
He creado un nombre al rango de los libros externos.
En las celdas he hecho referencia a dichos nombre.
He creado una pequeña macro que lo único que hace es actualizar el rango con
los nombres de los excel's externos, pues los he hecho depender del valor de
otra celda, y así puedo vincularlo cuando y como quiero.
Sólo actualizando los VINCULOS ya funciona.

Muchas gracias por todo.
Josep

"Héctor Miguel" wrote:

hola, Josep !

> ... no se si se te ocurre otra solucion, a parte del INDIRECT.EXT de Laurent Longre
> ... no queria instalar ningun complemento para evitar problemas futuros...

(p.e.)
>> la solucion es usar macros (reales) p.e.:
>> - aprovechando los eventos de la hoja para ejecutar la funcion
>> - y depositando el resultado (o un vinculo) de "la consulta" al archivo cerrado en la celda "X" (o rango de celdas)
>>
>> si cualquier duda (o informacion adicional)... comentas ?
>> saludos,
>> hector.



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida