Cuando no se encuentre la referencia a un archivo no levante la ventana para encontrarlo

26/03/2007 - 16:44 por dwx110 | Informe spam
Tengo un problema, estuve trabajando una macro en excel 2000 y ahora
que he pasado a excel 2003 han cambiado un par de cosas. Mi macro
tiene una parte en donde hago referencias a archivos, cuando estos no
eran encontrados la variable ERROR se llenaba y en este caso yo hacia
que saltara a la siguiente instruccion (On Error Resume Next...), con
esto evitaba que apareciera una ventana en la cual tenia que indicar
cual era el archivo al que estaba haciendo referencia.

Ahora que he pasado a excel 2003 la cosa a cambiado, ya que cuando no
se encuentra el archivo que se hace referencia desde la macro la
variable ERROR no se llena de nada y entonces salta la ventana en la
cual se debe indicar en donde se encuentra el archivo al uqe se hace
referencia.

Entonces, lo que yo quiero saber es si existe alguna manera de que
esto no ocurra, ya sea bloqueando la salida de la ventana indicada
anteriormente desde un comienzo, utilizando alguna variable tipo
ERROR, etc.

Muchas gracias.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
27/03/2007 - 06:20 | Informe spam
hola, 'anonimo/a' !

... estuve trabajando una macro en excel 2000... donde hago referencias a archivos
cuando estos no eran encontrados la variable ERROR se llenaba
... hacia que saltara a la siguiente instruccion (On Error Resume Next...)
... evitaba que apareciera una ventana en la cual tenia que indicar cual era el archivo al que estaba haciendo referencia.
... he pasado a excel 2003 la cosa a cambiado... cuando no se encuentra el archivo que se hace referencia desde la macro
la variable ERROR no se llena de nada y entonces salta la ventana en la cual se debe indicar en donde se encuentra el archivo
... lo que yo quiero saber es si existe alguna manera de que esto no ocurra
ya sea bloqueando la salida de la ventana indicada anteriormente desde un comienzo, utilizando alguna variable tipo ERROR, etc.



tal como lo expones, no se aprecia que un cambio de version de excel pudiera se la causa de los errores que comentas -?-

[probablemente] cuando te 'pasaste' a excel 2003, tambien actualizaste tu windows [p.e. de 98 a xp] -?-
y la estructura de los directorios ya no es 'exactamente' la misma que conocias de windows anteriores -?-

tambien seria bueno si expones la macro [o al menos, las partes importantes como variables y su forma de llenado/manejo] -?-

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 dwx110
27/03/2007 - 15:59 | Informe spam
On 26 mar, 23:20, "Héctor Miguel"
wrote:
hola, 'anonimo/a' !

> ... estuve trabajando una macro en excel 2000... donde hago referencias a archivos
> cuando estos no eran encontrados la variable ERROR se llenaba
> ... hacia que saltara a la siguiente instruccion (On Error Resume Next...)
> ... evitaba que apareciera una ventana en la cual tenia que indicar cual era el archivo al que estaba haciendo referencia.
> ... he pasado a excel 2003 la cosa a cambiado... cuando no se encuentra el archivo que se hace referencia desde la macro
> la variable ERROR no se llena de nada y entonces salta la ventana en la cual se debe indicar en donde se encuentra el archivo
> ... lo que yo quiero saber es si existe alguna manera de que esto no ocurra
> ya sea bloqueando la salida de la ventana indicada anteriormente desde un comienzo, utilizando alguna variable tipo ERROR, etc.

tal como lo expones, no se aprecia que un cambio de version de excel pudiera se la causa de los errores que comentas -?-

[probablemente] cuando te 'pasaste' a excel 2003, tambien actualizaste tu windows [p.e. de 98 a xp] -?-
y la estructura de los directorios ya no es 'exactamente' la misma que conocias de windows anteriores -?-

tambien seria bueno si expones la macro [o al menos, las partes importantes como variables y su forma de llenado/manejo] -?-

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.



Hector que tal? , en realidad sigo con el mismo sistema operativo
(windows 2000), el unico que ha cambiado es el de la actualizacion del
office del 2000 al 2003.

A continuacion muestro un poco de mi codigo.

On Error Resume Next
copiaInformacion Range(celdaInicial), producto, ruta, año + "\enero
\", ruta2, zona, cliente, rango, columna

cambioRangos tipo, rango, columna, "febrero", informacion, año
copiaInformacion Range(celdaInicial).Offset(1, 0), producto, ruta,
año + "\febrero\", ruta2, zona, cliente, rango, columna

rangoBusqueda tipo, rango, columna, año, informacion
copiaInformacion Range(celdaInicial).Offset(2, 0), producto, ruta,
año + "\marzo\", ruta2, zona, cliente, rango, columna
copiaInformacion Range(celdaInicial).Offset(3, 0), producto, ruta,
año + "\abril\", ruta2, zona, cliente, rango, columna
...

Sub copiaInformacion(celda As Range, producto As String, ruta As
String, mes As String)
Dim Archivo As String, archivo2 As String
If zona = "T-45" Or zona = "T-46" Then
If ExisteHoja(ruta + mes) Then
Archivo = "[" + zona + "-I.xls]"
************celda.FormulaR1C1 = "=IF(ISERROR(VLOOKUP(""" + producto +
"""," + ruta + mes + Archivo + "'!" + rango + "," + columna + ",
0)),""sin inform."",
VLOOKUP(""" + producto
+ """," + ruta + mes + ruta2 + Archivo + cliente + "'!" + rango + ","
+ columna + ",0))"
Exit Sub
ElseIf ExisteHoja(ruta + mes) Then
Archivo = "[" + zona + "-II.xls]"
************celda.FormulaR1C1 = "=IF(ISERROR(VLOOKUP(""" + producto +
"""," + ruta + mes + Archivo + "'!" + rango + "," + columna + ",
0)),""sin inform."",
VLOOKUP (""" +
producto + """," + ruta + mes + ruta2 + Archivo + cliente + "'!" +
rango + "," + columna + ",0))"
Exit Sub
Else
Exit Sub
End If
Else
If ExisteHoja(ruta + mes) Then
Archivo = "[" + zona + ".xls]"
*************celda.FormulaR1C1 = "=IF(ISERROR(VLOOKUP(""" + producto +
"""," + ruta + mes + Archivo + "'!" + rango + "," + columna + ",
0)),""sin inform."",
VLOOKUP(""" + producto +
"""," + ruta + mes + ruta2 + Archivo + cliente + "'!" + rango + "," +
columna + ",0))"
Exit Sub
End If
End If
End Sub

En las filas que esta con ********* son las qeu hacen referencia a
informacion dentro de la ruta indicada, entonces antes (con excel
2000) cuando no se encontraba el archivo en la direccion indicada
saltaba un error y como estoy colocando "On Error Resume Next"
entonces esto hace que pase a la siguiente instruccion, ya que sin
esto aparece uan ventana en donde uno debe indicar la direccion y el
archivo al que se esta haciendo referencia. El problema es que ahora
(con excel 2003) no salta ningun error y de frente aparece la ventana
que indique antes.

Espero que se entienda.

Muchas gracias.
Respuesta Responder a este mensaje
#3 Héctor Miguel
27/03/2007 - 21:25 | Informe spam
hola, ???

... sigo con el mismo sistema operativo (windows 2000), el unico que ha cambiado es el... office del 2000 al 2003.
A continuacion muestro un poco de mi codigo. [... omito el codigo ya que a fin de cuentas esta incompleto ...] :))
... antes (con excel 2000) cuando no se encontraba el archivo en la direccion indicada saltaba un error
y como estoy colocando "On Error Resume Next" entonces esto hace que pase a la siguiente instruccion
ya que sin esto aparece uan ventana en donde uno debe indicar la direccion y el archivo al que se esta haciendo referencia.
El problema es que ahora (con excel 2003) no salta ningun error y de frente aparece la ventana que indique antes...



1) que 'hace' [+/- exactamente] el multi-llamado procedimiento sub/function -> ExisteHoja(ruta + mes) ???

2) bajo que condiciones es que se debe establecer la variable 'Archivo'...
-> dependiendo de si la variable 'zona' es "T-45" "T-46" o cualquier otro dato ???
a) Archivo = "[" + zona + "-I.xls]" <= cuando ???
b) Archivo = "[" + zona + "-II.xls]" <= cuando ???
c) Archivo = "[" + zona + ".xls]" <= cuando ???

3) el otro multi-llamado procedimiento [copiaInformacion] tiene/recibe/espera/... SOLO 4 argumentos
-> Sub copiaInformacion(celda As Range, producto As String, ruta As String, mes As String)
[pero]... en cada llamada le trasladas un 'total' de 9 argumentos...
-> copiaInformacion Range(celdaInicial).Offset(3, 0), producto, ruta, año + "\abril\", ruta2, zona, cliente, rango, columna
-> los 'restantes' son variables publicas ???

4) [probablemente] se podria 'agilizar/adelgazar/optimizar/...' el codigo que estas utilizando -?-
[p.e.] las instrucciones 'Exit Sub' estan sobrando, ya que de cumplirse una condicion, ya no se evaluan las 'restantes' ;)
pero de todos modos, necesitarias comentar los detalles que no se han podido 'ver' [desde este lado del mensaje] :))

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