Mas Archivos y comandos DOS

25/10/2006 - 08:51 por Jon | Informe spam
Hola a todos, a ver si en esta encuentro solución, que tengo dos preguntas
que haceros:
1) Cuando abro un fichero editable con Notepad, lo hago de la siguiente
forma para ir leyendo y almacenando en un vector el contenido del mismo por
filas.
Open directorio & "\" & fichero For Input As #1
For i = 0 To filasMax
Input #1, fila(i)
Next i
Close #1
Lo que pasa es que el fichero no siempre tiene el mismo numero de filas, y
cuando llega al final si el filasMax (indice de filas) es mayor que el numero
de filas del fichero, me da error. Por tanto, como puedo conocer de antemano
el numero de filas del fichero? o como puedo detectar que hay un error para
pasar a otro lado del bucle?

2) A parte de esto, y aunque no está relacionado, quiero saber si desde una
Macro de Excel se pueden ejecutar comandos de DOS. Por ejemplo, que copie un
fichero de una carpeta, etc...
fichero="DOC1.doc"
directorio="C:\prueba"
objetivo=directorio & "\" & fichero
copy objetivo c:\prueba2

Muchas gracias.
 

Leer las respuestas

#1 Juan M
25/10/2006 - 10:52 | Informe spam
Hola Jon

Para tu primera pregunta lo normal es comprobar que se ha llegado al final
del archivo de texto, y si ocurre esto salir del bucle

(de la ayuda de excel vba)

Dim MiCadena, MiNúmero
Open "PRUEBA" For Input As #1 ' Abre el archivo para recibir los datos.
Do While Not EOF(1) ' Repite el bucle hasta el final del archivo.
Input #1, MiCadena, MiNúmero ' Lee el carácter en dos variables.
Debug.Print MiCadena, MiNúmero ' Imprime datos en la ventana
Inmediato.
Loop
Close #1 ' Cierra el archivo.

Tambien puedes consultar esta direccion de Eduardo Olaz. Los capitulos 17,
18, 19 tratan sobre el trabajo con ficheros.

http://www.olaz.net/descargas/acces...tregas.htm

Respecto a la segunda pregunta vba dispone de comandos para copiar y borrar
archivos

para borrar Kill
Kill "PRUEBA" ' Se elimina el archivo
para copiar
Dim ArchOrigen, ArchDestino
ArchOrigen = "ARCHORIG" ' Se define el nombre del archivo de origen.
ArchDestino = "ARCHDEST" ' Se define el nombre del archivo de origen.
File Copy ArchOrigen, ArchDestino ' Se copia el archivo de origen en
el archivo de destino.

Si quieres otros comandos no dejes de preguntar, o consultar la ayuda. :)

Un saludo
Juan


"Jon" escribió en el mensaje
news:
Hola a todos, a ver si en esta encuentro solución, que tengo dos preguntas
que haceros:
1) Cuando abro un fichero editable con Notepad, lo hago de la siguiente
forma para ir leyendo y almacenando en un vector el contenido del mismo
por
filas.
Open directorio & "\" & fichero For Input As #1
For i = 0 To filasMax
Input #1, fila(i)
Next i
Close #1
Lo que pasa es que el fichero no siempre tiene el mismo numero de filas, y
cuando llega al final si el filasMax (indice de filas) es mayor que el
numero
de filas del fichero, me da error. Por tanto, como puedo conocer de
antemano
el numero de filas del fichero? o como puedo detectar que hay un error
para
pasar a otro lado del bucle?

2) A parte de esto, y aunque no está relacionado, quiero saber si desde
una
Macro de Excel se pueden ejecutar comandos de DOS. Por ejemplo, que copie
un
fichero de una carpeta, etc...
fichero="DOC1.doc"
directorio="C:\prueba"
objetivo=directorio & "\" & fichero
copy objetivo c:\prueba2

Muchas gracias.

Preguntas similares