Problemas con las rutas

22/02/2006 - 16:50 por Adolfo | Informe spam
Hola gente:

Estoy intentando hacer los siguiente, tengo un archivo del cual tengo que
sacar una serie de datos, para evitar tener que mandar todo el archivo de un
lado para otro, he pensado que lo mejor es exportar los datos del mismo en
un archivo "csv", lo cual reduce considerablemente el tamaño. Como todos los
datos estan en una única hoja no hay problema a la hora de generera el
archivo. Como lo que necesito es automatizarlo gracias al grabador de macros
he sacado el siguiente código:

ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\Administrador\Mis
documentos\Corrector2.csv" _
, FileFormat:=xlCSVMSDOS, CreateBackup:=False

El cual funciona perfectamente. Pero puestos a pedir lo que necesito es que
me genere un archivo csv en el mismo directorio donde esta el archivo xls y
ademas quiero que el nombre de ese archivo sea el que viene en la celda a1
de la hoja 1. Yo he retocado el código y he llegado hasta lo siguiente:

RUTA = ThisWorkbook.Path
ARCHIVO = Hoja1.Cells(1, 1) & ".CSV"
RUTA = RUTA & "\" & ARCHIVO
ActiveWorkbook.SaveAs Filename:=RUTA & ", FileFormat:=xlCSVMSDOS,
CreateBackup:=False"

Pero me da el siguiente mensaje de error:

Se ha producido el error 1004 en tiempo de ejecución:
No se puede tener acceso al archivo. Intente lo siguiente:
Compruebe que la carpeta especificada existe
Compruebe que la carpeta que contiene el archivo no es de solo lectura
Compruebe que el archivo no contiene ninguno de los siguientes caracteres:<>
? []:*

El nombre que esta dentro de la celda A1 es el mismo que aparece mas arriba,
con lo cual no tiene ninguno de esos signos.

¿Alguien me puede echar una mano y decirme que es lo que estoy haciendo
mal?. Si alguien ha realizado algo parecido tambien estoy abierto a nuevas
ideas (aunque sean totalmente diferentes)

Un saludo y gracias por anticipado.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
23/02/2006 - 07:14 | Informe spam
hola, Adolfo !

[segun se aprecia]... el error 1004 lo hace 'saltar' la sentencia donde haces el 'SaveAs'...
la 'razon' ?... estas agregando un signo de concatenacion ->&<- y 'entre-comillando' el resto de la sentencia...
[con lo cual]... dicho 'agregado' pasa a formar parte del nombre del archivo [Y SI contiene los caracteres ->:<-] <= OJO

prueba a modificar la linea donde haces el 'SaveAs'...
de: -> ActiveWorkbook.SaveAs Filename:=RUTA & ", FileFormat:=xlCSVMSDOS, CreateBackup:=False"
a: -> ActiveWorkbook.SaveAs Filename:=RUTA, FileFormat:=xlCSVMSDOS, CreateBackup:=False

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
=> ... necesito... que me genere un archivo csv en el mismo directorio donde esta el archivo xls
yademas quiero que el nombre de ese archivo sea el que viene en la celda a1 de la hoja 1.
Yo he retocado el codigo y he llegado hasta lo siguiente:
RUTA = ThisWorkbook.Path
ARCHIVO = Hoja1.Cells(1, 1) & ".CSV"
RUTA = RUTA & "\" & ARCHIVO
ActiveWorkbook.SaveAs Filename:=RUTA & ", FileFormat:=xlCSVMSDOS, CreateBackup:=False"
Pero me da el siguiente mensaje de error:
Se ha producido el error 1004 en tiempo de ejecución:
No se puede tener acceso al archivo. Intente lo siguiente:
Compruebe que la carpeta especificada existe
Compruebe que la carpeta que contiene el archivo no es de solo lectura
Compruebe que el archivo no contiene ninguno de los siguientes caracteres:<>? []:*
El nombre que esta dentro de la celda A1 es el mismo que aparece mas arriba, con lo cual no tiene ninguno de esos signos.
Alguien me puede echar una mano y decirme que es lo que estoy haciendo mal?...
Respuesta Responder a este mensaje
#2 Adolfo
23/02/2006 - 08:40 | Informe spam
Muchas gracias, ahora funciona perfectamente, con tanta comilla y tanto & al
final me he liado.

Una última cosa. Cuando ejecuto el código, se cierra el archivo xls y me
aparece en pantalla el archivo csv generado, pero con todas las hojas, no
solo con la que hemos grabado. El problema es que el usuario puede volver a
guardar el archivo encima del ya creado anteriormente pudiendo cargarse todo
el trabajo. La única solución que se me ocurre es cerrar la aplicación una
vez grabado los datos. Aunque lo mejor seria que el archivo se limitase a
guardar los datos en un archivo y no se cambiase de xls a csv. La idea es
exportar, no guardar como.
¿Alguna idea?

"Héctor Miguel" escribió en el mensaje
news:
hola, Adolfo !

[segun se aprecia]... el error 1004 lo hace 'saltar' la sentencia donde


haces el 'SaveAs'...
la 'razon' ?... estas agregando un signo de concatenacion ->&<- y


'entre-comillando' el resto de la sentencia...
[con lo cual]... dicho 'agregado' pasa a formar parte del nombre del


archivo [Y SI contiene los caracteres ->:<-] <= OJO

prueba a modificar la linea donde haces el 'SaveAs'...
de: -> ActiveWorkbook.SaveAs Filename:=RUTA & ", FileFormat:=xlCSVMSDOS,


CreateBackup:=False"
a: -> ActiveWorkbook.SaveAs Filename:=RUTA, FileFormat:=xlCSVMSDOS,


CreateBackup:=False

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
=> > ... necesito... que me genere un archivo csv en el mismo directorio


donde esta el archivo xls
> yademas quiero que el nombre de ese archivo sea el que viene en la celda


a1 de la hoja 1.
> Yo he retocado el codigo y he llegado hasta lo siguiente:
> RUTA = ThisWorkbook.Path
> ARCHIVO = Hoja1.Cells(1, 1) & ".CSV"
> RUTA = RUTA & "\" & ARCHIVO
> ActiveWorkbook.SaveAs Filename:=RUTA & ", FileFormat:=xlCSVMSDOS,


CreateBackup:=False"
> Pero me da el siguiente mensaje de error:
> Se ha producido el error 1004 en tiempo de ejecución:
> No se puede tener acceso al archivo. Intente lo siguiente:
> Compruebe que la carpeta especificada existe
> Compruebe que la carpeta que contiene el archivo no es de solo lectura
> Compruebe que el archivo no contiene ninguno de los siguientes


caracteres:<>? []:*
> El nombre que esta dentro de la celda A1 es el mismo que aparece mas


arriba, con lo cual no tiene ninguno de esos signos.
> Alguien me puede echar una mano y decirme que es lo que estoy haciendo


mal?...


Respuesta Responder a este mensaje
#3 Héctor Miguel
23/02/2006 - 22:29 | Informe spam
hola, Adolfo !

... ejecuto el codigo, se cierra el... xls y me aparece... el... csv generado, pero con todas las hojas, no solo con la que hemos grabado
... problema... el usuario puede volver a guardar el archivo encima del ya creado anteriormente pudiendo cargarse todo el trabajo
... se me ocurre... cerrar la aplicacion una vez grabado los datos
... mejor seria... se limitase a guardar los datos en un archivo y no se cambiase de xls a csv. La idea es exportar, no guardar como...



no se a si te refieres al xls o al csv [o que quieres decir exactamente] con la expresion...
'... el usuario puede volver a guardar el archivo encima del ya creado anteriormente pudiendo cargarse todo el trabajo...' -?-

en cualquier caso, resulta mas practico [comodo y facil] 'hacer el pase' a csv con un 'guardar como...' que 'exportando' por codigo :))
suponiendo que 'Hoja1' [CodeName] ES la hoja que quieres sea la unica en el 'futuro' CSV, prueba con algo +/- como lo siguiente...

Dim NombreArchivo As String
' definimos el nombre que va a tener el archivo de una sola hoja
NombreArchivo = ThisWorkbook.Path & "\" & Hoja1.Cells(1, 1) & ".csv"
' copiamos la hoja1 a un libro nuevo [sin nombre y con una sola hoja]
Hoja1.Copy
' hacemos el guardar como... [CSV] del archivo nuevo de una sola hoja
ActiveWorkbook.SaveAs FileName:=NombreArchivo, FileFormat:=xlCSVMSDOS
' cerramos el archivo YA 'generado/convertido/...' como CSV
ActiveWorkbook.Close, False
' OPCIONALMENTE... puedes inclusive cerrar el archivo [XLS] 'original'
ThisWorkbook.Close, False ' o True si quieres [o no] guardar los cambios ;)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#4 Adolfo
24/02/2006 - 10:35 | Informe spam
Muchas gracias, lo miro y si hay algún problema os vuelvo a consultar.

Un saludo,
Adolfo

"Héctor Miguel" escribió en el mensaje
news:%
hola, Adolfo !

> ... ejecuto el codigo, se cierra el... xls y me aparece... el... csv


generado, pero con todas las hojas, no solo con la que hemos grabado
> ... problema... el usuario puede volver a guardar el archivo encima del


ya creado anteriormente pudiendo cargarse todo el trabajo
> ... se me ocurre... cerrar la aplicacion una vez grabado los datos
> ... mejor seria... se limitase a guardar los datos en un archivo y no se


cambiase de xls a csv. La idea es exportar, no guardar como...

no se a si te refieres al xls o al csv [o que quieres decir exactamente]


con la expresion...
'... el usuario puede volver a guardar el archivo encima del ya creado


anteriormente pudiendo cargarse todo el trabajo...' -?-

en cualquier caso, resulta mas practico [comodo y facil] 'hacer el pase' a


csv con un 'guardar como...' que 'exportando' por codigo :))
suponiendo que 'Hoja1' [CodeName] ES la hoja que quieres sea la unica en


el 'futuro' CSV, prueba con algo +/- como lo siguiente...

Dim NombreArchivo As String
' definimos el nombre que va a tener el archivo de una sola hoja
NombreArchivo = ThisWorkbook.Path & "\" & Hoja1.Cells(1, 1) & ".csv"
' copiamos la hoja1 a un libro nuevo [sin nombre y con una sola hoja]
Hoja1.Copy
' hacemos el guardar como... [CSV] del archivo nuevo de una sola hoja
ActiveWorkbook.SaveAs FileName:=NombreArchivo, FileFormat:=xlCSVMSDOS
' cerramos el archivo YA 'generado/convertido/...' como CSV
ActiveWorkbook.Close, False
' OPCIONALMENTE... puedes inclusive cerrar el archivo [XLS] 'original'
ThisWorkbook.Close, False ' o True si quieres [o no] guardar los cambios


;)

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