Como Obtener el estado de guardado de un archivo usando VBA

Índice
  1. Usando la propiedad .saved
  2. ¿Alguna vez se ha guardado un archivo?
  3. Conclusión

A menudo, al crear una macro, es posible que necesitemos saber el estado de guardado del archivo con el que estamos trabajando. Esta publicación explora algunas de las opciones disponibles para comprender y controlar este importante aspecto del control de archivos.

Usando la propiedad .saved

Dentro del Editor de Visual Basic podemos ver la propiedad Guardado de un libro.

Estado guardado de VBA

Si guarda un libro de trabajo, cambiará a Verdadero, pero una vez que realice un solo cambio, volverá a ser Falso.

Efectivamente, esta propiedad muestra si el archivo actual ha cambiado con respecto a la versión guardada anteriormente.

Sub saveStatus()If ActiveWorkbook.Saved = False Then MsgBox "El archivo ha cambiado desde la última vez que se guardó"Else MsgBox "El archivo no ha cambiado desde la última vez que se guardó"End IfEnd Sub

Aunque parece que esta debería ser una propiedad de solo lectura, es posible cambiarla con VBA. Esto engañará a Excel haciéndole creer que el archivo actual ha sido modificado o no.

Es esta propiedad la que utiliza Excel para saber si mostrar el siguiente mensaje al cerrar el libro.

Estado guardado de VBA: guardar cambios

Hay dos formas de evitar este mensaje:

Método 1: configurar DisplayAlerts = Falso

El uso del siguiente código no hará que aparezca el cuadro de mensaje "quiero guardar los cambios" y el archivo no se guardará.

Application.DisplayAlerts = FalseActiveWorkbook.CloseApplication.DisplayAlerts = Verdadero

Método 2: use .saved = true

Al igual que el método 1, al usar el código siguiente no aparecerá el cuadro de mensaje "quiero guardar los cambios" y el archivo no se guardará.

ActiveWorkbook.Saved = TrueActiveWorkbook.Cerrar

¿Alguna vez se ha guardado un archivo?

Hemos establecido lo que puede hacer la propiedad .saved. Pero falta un dato. . . no nos dice si el archivo se ha guardado alguna vez.

Si crea un nuevo documento en Excel, su estado guardado se muestra como Verdadero. Pero una vez que se realiza un cambio en el libro, cambia a Falso. Por lo tanto, el estado Verdadero/Falso de la propiedad guardada no nos ayuda a saber si alguna vez se guardó un archivo. Pero también tenemos varias opciones aquí.

Método 1: probar la ruta del archivo

Un libro que nunca se haya guardado tendrá un valor en blanco para la ruta del archivo.

Si ActiveWorkbook.Path = "" Entonces MsgBox "No guardado"

Método 2: utilizar la función FILEDATETIME

La función FILEDATETIME en VBA toma solo un argumento, una ruta de archivo completa, y devuelve la última vez que se modificó el archivo.

Depurar.Imprimir FileDateTime(ActiveWorkbook.Name)

Si el archivo se ha guardado, se devolverá una fecha y hora a la ventana Inmediato; de lo contrario, se devolverá un error.

Estado guardado de VBA: mensaje de error

Al detectar el error, sabrá si el archivo se guardó alguna vez.

En caso de error, reanudar NextDebug.Print FileDateTime(ActiveWorkbook.Name)Si Err.Number 0 Entonces MsgBox "El archivo nunca se ha guardado"Finalizar si en error Ir a 0

Método 3: utilizar propiedades de documento integradas

Este enfoque es similar a la función FILEDATETIME.

Debug.Print ActiveWorkbook.BuiltinDocumentProperties ("Última hora de guardado")

Si el archivo se ha guardado, se devolverá una fecha y hora a la ventana Inmediato; de lo contrario, se devolverá un error.

Estadísticas guardadas de VBA: mensaje de error Propiedades integradas

Al igual que la función FILEDATETIME, puede detectar el error si el archivo nunca se ha guardado.

Conclusión

Al escribir código VBA, existen varias opciones y configuraciones que podemos usar para comprender y controlar cómo y si se guarda un archivo. En varias aplicaciones, esto es crucial para garantizar que la macro se ejecute sin problemas.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Este sitio web utiliza cookies para mejorar la experiencia del usuario y garantizar un funcionamiento eficiente. Al utilizar nuestro sitio web, aceptas todas las cookies de acuerdo con nuestra política de cookies. Leer mas...