martes, 3 de diciembre de 2013

¿Qué puedo hacer con WorkbooK.SaveAs en Macros de excel?




La aplicación de macros en excel es una herramienta muy funcional que permite automatizar procesos que repetitivos.En esta ocasión se explicará el funcionamiento de SaveAs dentro de macros en excel usando el lenguaje Visual Basic (VBA)


¿Qué es SaveAs?


Es una  función nos permite guardar los cambios efectuados en un libro de excel en un archivo diferente. La función contiene distintos argumentos que se mostrarán en la figura1, luego se procederá a explicar los argumentos de ésta y cómo se usa,  para finalizar con un caso aplicado.


Figura 1: Función SaveAs


Los argumentos de la función SaveAs


1)Filename indica el nombre con el cual guardaremos nuestro archivo. También se puede especificar la ruta donde lo guardaremos, por defecto lo guardará en la carpeta donde está el archivo que estamos ejecutando. Para esto, debemos crear una variable Path (ruta archivo) de tipo String.  En este caso corresponde al Escritorio, carpeta caro y el nombre del archivo será “Ejemplo2”.  
Si la ruta especificada no existe, se generará un error y el archivo no se guardará.



Figura 2: Argumentos



2)Dentro de FileFormat encontramos muchos formatos para guardar nuestro archivo (el formato nos permitirá tener compatibilidad con la actividad y versión de Excel que tengamos). Los formatos más importantes son:

Figura 3: Formatos



3)Al generar una contraseña (Password), se debe obligatoriamente ingresar al abrir el archivo. Excel a modo de seguridad nos pide volver a escribir la contraseña (WriteResPassword), para verificar su consistencia. Si es que no deseamos tener contraseña, sólo ponemos “” al valor. En este caso es “hola”.


4)El concepto ReadOnlyRecommended en caso de ser true (sin comillas en este caso), nos mostrará un mensaje cuando abramos el archivo, que nos recomendará usar este sólo en modo de lectura. En caso de ser false no nos mostrará este mensaje.


5)CreateBackup: Una opción muy importante es generar automáticamente copias de seguridad, esto sólo funciona cuando tenga un valor true. Se debe tener cuidado con la ruta donde se generarán estas copias de seguridad, ya que se harán en la misma carpeta donde estamos indicando que guarde nuestro archivo (FileName).


6)AddToMru: Es una opción que nos permite en caso de ser true, guardar el archivo en uso dentro de la lista reciente de Excel. Tal como se aprecia en la siguiente imagen:



Figura 4: Lista reciente de excel usando AddToMru


En caso de ser False, no necesariamente el archivo aparecerá en esta lista.


7)Las opciones TextCodePage y TextVisualLayout nos permiten cambiar el formato del archivo, como pasar de un archivo .xls a uno .cvs. Sin embargo, dado la complejidad de esto, recomendamos utilizar la extensión FileFormat, que nos permitirá hacer lo mismo e incluso protegiendo la integridad del archivo actual.


8)La opción Local, en caso de ser true nos permite guardar los archivos en el lenguaje de Excel (incluyendo la configuración del panel de control). En caso contrario (el que viene predeterminado) guarda los archivos en el lenguaje de VBA. Recomendamos siempre utilizar esta variable en valor true.


Es necesario indicar que Excel 2013 nos permite agregar dos conceptos más: ConflictResolution y AccessMode.


ConflictResolution:
Es una variante opcional que especifica la forma en que se resuelven los conflictos si el workbook es una lista compartida. Puede ser una de las siguientes XlSaveConflictResolution constantes: xlUserResolution (despliega el cuadro de diálogo de resolución de conflicto), xlLocalSessionChanges (automáticamente acepta los cambios del usuario local), o xlOtherSessionChanges (acepta otros cambios en lugar de los cambios del usuario local). Si se omite este argumento,se despliega el cuadro de diálogo de resolución de conflictos.


AccessMode:
Es una variante opcional. El modo de acceso al libro puede ser una de las siguientes XlSaveAsAccessMode constantes: xlShared (lista compartida), xlExclusive (modo exclusivo), o xlNoChange (no cambia el modo de acceso). Si se omite este argumento, el modo de acceso no se cambia. Este argumento se ignora si guardas una lista compartida sin cambiar el nombre de archivo. Para cambiar el modo de acceso, usa el método ExclusiveAccess


Caso Aplicado


A continuación daremos un ejemplo más aplicado de los conceptos más relevantes que consideramos que son más útiles en la práctica:


El ejemplo consiste en asignarle a un botón la opción de guardar el archivo con un nuevo nombre (que se encuentra en las celdas a1 y b1) en una ruta específica. Para esto los pasos son los siguientes:
1)    Abrir un Excel con los datos que se desean guardar
2)    Insertar una forma que será nuestro botón (GUARDAR)


Figura 5: Insertar forma
3)    Luego abrir el Visual Basic, de la manera explicada al comienzo de este comentario, y generar el siguiente código:


Figura 6: Macro

4)    Luego debemos asignar esta macro al botón/forma que generamos. Para ello debemos hacer click derecho sobre este objeto y hacer click donde dice asignar macro. Finalmente debemos asignar la macro “SaveAsBoton”, ya que es el nombre de nuestra macro.

Figura 7: Asignar Macro


Luego al hacer click sobre el botón, automáticamente nuestro archivo se guardará en la ruta asignada (Path) con el nombre de las celdas A1 y B1 con una extensión .xlsx.
Esta automatización del proceso “guardar” nos puede ayudar ya que constantemente estamos guardando los cambios que le hacemos a nuestro archivo, podemos tener un archivo por cada cambio sólo cambiándole el nombre a una de las dos celdas (A1 o B1). Podríamos guardar un Avance1, Avance2  y así sucesivamente, sin perder los datos del original.


A lo largo de este post se mostró qué es y cómo se usa la función de Workbook.SaveAs en macros de excel. Descubrimos que es una herramienta muy funcional que nos permite automatizar el proceso de guardado seguro de los archivos.



Link de interés:



Autores:
Diego Diaz
Magdalena Faure
Carolina Maturana





1 comentario:

  1. Excelente utilidad.
    Ahora solo tendré que ir a descargar excel para mac, para poner en practica todo lo que veo en tu post.

    ResponderEliminar