Problema para ejecutar macro en disco "D" o memoria extraíble

La función de esta macro es juntar los archivos que están en la misma carpeta que contiene el libro con la macro, colocándolos en diferentes hojas de un solo libro.

El problema es que a mí en particular, sólo me funciona si la carpeta que contiene los archivos se encuentra alojada en el disco C. Si yo coloco la misma carpeta en el disco D o en otra partición la macro no funciona. He probado en 3 PC diferentes con word 2007 y 2010.

He formulado una pregunta parecida anteriormente, solucionando parcialmente el problema.

El error se da en la siguiente linea:

Workbooks.Open archi

"Se ha producido un error en tiempo '1004' en tiempo de ejecución:

No se encontró "Archivo". Compruebe la ortografía del nombre del archivo y si su ubicación ws correcta.

Si intenta abrir el archivo desde la lista de los usados recientemente, asegúrese de que no se ha cambiado el nombre del archivo, ni se ha eliminado o movido."

Sólo funcionó en una oportunidad abriendo un archivo nuevo, creando la macro y luego guardando el archivo en una carpeta en el disco D, pero sin cerrar el libro. Porque luego de cerrar el libro y abrirlo nuevamente, la macro ya dejaba de funcionar otra vez.

Sub Juntar_Archivos()
Dim hoja As Object
Application.DisplayAlerts = False
mio = ActiveWorkbook.Name
ruta = ActiveWorkbook.Path
ChDir ruta & "\"
archi = Dir(ruta & "\*.csv*")
Do While archi <> mio And archi <> ""
Workbooks.Open archi
otro = ActiveWorkbook.Name
For Each hoja In ActiveWorkbook.Sheets
hoja.Copy after:=Workbooks(mio).Sheets(Workbooks(mio).Sheets.Count)
Next
Workbooks(otro).Close False
archi = Dir()
Loop
Sheets("Hoja2").Select
End Sub

Agradeceré su ayuda...

2 respuestas

Respuesta
1

El problema es que archi solo contiene el nombre del fichero sin nionguna ruta, entonces intenta encontrar ese fichero en el directorio por defecto y no lo encuentra.

Para solucionarlo cambia la orden

Workbooks. Open archi

Por esta

Workbooks.Open ruta & "\" & archi

Con ello ya abre los ficheros que se encuentran en la ruta del fichero que tiene la macro y funcionará.

Respuesta
1

Pero está agregando la ruta al momento de cargar los archivos en la variable archi:

archi = Dir(ruta & "\*.csv*"),

entonces debería probar así:

ChDir ruta & "\"

archi = Dir("*.csv*")

Do While archi <> mio And archi <> ""

Workbooks.Open ruta & archi

Pero las 2 formas me funcionan, no entiendo por qué no le reconoce el drive D:

Perdón, debería ser así

ChDir ruta & "\"

archi = Dir("*.csv*")

Do While archi <> mio And archi <> ""

Workbooks.Open ruta & "\" & archi

Muchas gracias dante. He probado con tu sugerencia y no funcionó. Si bien ya no me daba error, los archivos no se abrían. 

Lo que si funcionó fue, como dijo  Valero Angel Serrano Mercadal ,agregar:  

Workbooks.Open ruta & "\" & archi

en la linea donde se producía el error, y ahí funcionó muy bien.

Igualmente, muchas gracias por tu respuesta.

Qué bueno que ya funciona

Pero cambiaste esto:

archi = Dir(ruta & "\*.csv*")

Por esto:

archi = Dir("*.csv*")

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas