La Web del Programador: Comunidad de Programadores
 
    Pregunta:  25200 - COMO SABER SI UN ARCHIVO ESTA SIENDO UTILIZADO
Autor:  Arturo Quiroz
Como se si un archivo esta siendo utilizado, por ejemplo un excel, tengo una opcion en la que copio un tabla a formato excel, pero habeces genero el mismo nombre del archivo, cuando existe lo elimino, pero cuando esta siendo usado no lo puedo eliminar, quiero saber si hay alguna función que me diga si el archivo esta siendo usado.

  Respuesta:  Marvin Antonio Callejas Melèndez
Hola:
Mediante APIS, puedes verificar el estado del archivo, sin embargo también puedes utilizar un método alternativo utilizando apertura de archivos de bajo nivel, con la funciòn FOPEN() de VFP, por ejemplo, si necesitas saber si el archivo miarchivo.xls esta abierto, puedes utilizar el siguiente còdigo:

CONTROL_ARCH=FOPEN(..\miarchivo.xls)

IF CONTROL_ARCH=-1
=messagebox("EL ARCHIVO ESTA ABIERTO")
RETURN
ENDIF

**LIBERAR LA APERTURA DE ARCHIVOS CON FOPEN PARA PODER
** ESCRIBIR EN EL.
IF CONTROL_ARCH<>-1
FCLOSE(CONTROL_ARCH)
ENDIF

Este código te permite verificar si el archivo esta abierto por otra persona y cancelar el procedimiento.

Cualquier consulta adicional, puedes escribirme.

  Respuesta:  Julio Cesar Arango Cubillos
No conozco una función que haga lo que necesitas, pero te doy una idea de lo que yo haría.

Antes de ejecutar el comando que copia la tabla haces una cláusula ON ERROR

ON ERROR do PROC_ERROR
use xxx
copy to miArchivo

.....
PROCEDURE PROC_ERROR
if Err = yyy
wait window "Archivo esta siendo utilizado"
....
EndIf
RETURN

El error yyy es el codigo de error que sale cuando el archivo esta siendo utilizado, debes buscar en las ayudas el numero exacto porque yo no me lo sé de memoria.

Espero que te sirva.

  Respuesta:  Jose Rolando Quintero Paz
Hola
En realidad lo que quieres es saber si el archivo esta abierto o no.
la funcion es la siguiente:

IF USED("EJEMPLO.XLS")
"wAIT WINDOWS "mensaje"
ENDIF

Aunque tambien podrias incluir una variable que reemplace el nombre del archivo. Esto funciona con las base de datos y tablas pero, nunca lo prove con otro tipo de archivo aunque con hacer la prueba no cuesta nada.
Si quieres escribeme y te envio un ejemplo que convierte archivos de excel a fox y usa una variable que reemplaza el nombre del archivo, es decir la tabla toma el nombre de la hoja de calculo.