Curso Excel VBA y Macros – Cap. 45 – Cuadro de diálogo Guardar como usando GetSaveAsFilename
Los formularios y cuadros de diálogo son parte fundamental de las aplicaciones o programas de Windows, Linux y Mac. En Excel si bien podemos desarrollar nuestros propios formularios, es importante saber que podemos usar los cuadros de diálogos que ya incluye Excel y mandarlos llamar desde VBA.
En esta sección previa a los Userforms, veremos algunos temas referentes a Cuadros de diálogo propios de Excel:
-
Cuadro de diálogo Abrir: método GetOpenFilename.
-
Cuadro de diálogo Guardar como: método GetSaveAsFilename.
-
Objeto FileDialog para usar Cuadros de diálogo de archivo.
-
Mostrar cuadros de diálogos propios de Excel.
Ver video Capítulo 45 Excel VBA & Macros
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
Cuadro de diálogo Guardar como usando el método GetSaveAsFilename
El cuadro de diálogo Guardar como es unos de los más usados, ya que nos permite precisamente eso, guardar archivos en Excel. Con el método GetSaveAsFilename podemos mostrar el cuadro de diálogo y con lenguaje VBA obtener la ruta completa y el nombre de archivo con extensión.
Este método muestra el cuadro de diálogo, pero no guarda ae archivo. En su lugar, nos devuelve el nombre y la ruta completa del archivo que se guardará y poder realizar acciones con ese valor.
Figura 1. Cuadro de diálogo Guardar como.
Sintaxis
Application.GetSaveAsFilename(InitialFileName, FileFilter, FilterIndex, Title, ButtonText)
Donde:
ARGUMENTO |
DESCRIPCIÓN |
InitialFilename |
Valor de texto que indica el nombre predeterminado del archivo |
FileFilter |
Valor de texto que indica el filtro de archivos. Ejemplo: Libro de Excel (*.xlsx). |
FilterIndex |
Especifica el índice correspondiente a los filtros de archivo para indicar el filtro predeterminado. Los valores van de 1 hasta el número de filtros. Si se omite el valor, se tomará el primer filtro. |
Title |
Valor de texto que indica el título de la ventana. Si se omite, el valor será “Abrir”. |
ButtonText |
Aplicable para Excel para Mac. |
Tipos de archivo para usar con el método SaveAs
Es importante tener en cuenta que si usamos el método SaveAs debemos definir el tipo de archivo correcto, siguiente la siguiente tabla, la cual podremos encontrar en Centro de Desarrolladores de Office.
NOMBRE |
DESCRIPCIÓN |
EXTENSIÓN |
xlAddIn |
Complemento de Microsoft Excel 97-2003 |
*.xla |
xlAddIn8 |
Complemento de Microsoft Excel 97-2003 |
*.xla |
xlCSV |
CSV |
*.csv |
xlCSVMac |
CSV de Macintosh |
*.csv |
xlCSVMSDOS |
CSV de MSDOS |
*.csv |
xlCSVUTF8 |
UTF8 CSV |
*.csv |
xlCSVWindows |
CSV de Windows |
*.csv |
xlCurrentPlatformText |
Texto de la plataforma actual |
*.txt |
xlExcel8 |
Libro de Excel 97-2003 |
*.xls |
xlHtml |
Formato HTML |
*.htm; *.html |
xlOpenXMLAddIn |
Complemento Open XML |
*.xlam |
xlOpenXMLStrictWorkbook |
Archivo Open XML estricto |
*.xlsx |
xlOpenXMLWorkbook |
Libro de Open XML |
*.xlsx |
xlOpenXMLWorkbookMacroEnabled |
Macro de plantilla de libro Open XML habilitada |
*.xlsm |
xlTextMac |
Texto de Macintosh |
*.txt |
xlTextMSDOS |
Texto de MSDOS |
*.txt |
xlTextWindows |
Texto de Windows |
*.txt |
Código VBA Guardar hoja activa como archivo nuevo
La siguiente macro nos ayudará a guardar la hoja activa como archivo nuevo. En el filtro tendremos 3 opciones para guardar, pero fácilmente pueden añadir más opciones:
-
Libro de Excel(*.xlsx).
-
Libro de Excel habilitado para macros(*.xlsm).
-
CSV (delimitado por comas)(*.csv).
Sub GuardarHoja() Dim NombreHoja As String Dim NombreArchivo As String Dim GuardarComo As Variant Dim Extension As String NombreHoja = ActiveSheet.Name ActiveSheet.Select ActiveSheet.Copy NombreArchivo = ActiveWorkbook.Name GuardarComo = Application.GetSaveAsFilename(InitialFileName:=NombreHoja, _ FileFilter:="Libro de Excel(*.xlsx),*.xlsx, Libro de Excel habilitado para macros(*.xlsm),*.xlsm," & _ CSV (delimitado por comas)(*.csv),*.csv", _" Title:="EXCELeINFO - Guardar hoja como archivo nuevo") If GuardarComo = False Then Workbooks(NombreArchivo).Close SaveChanges:=False Else 'Extension With Application.WorksheetFunction Extension = .Trim(Right(.Substitute(GuardarComo, ".", .Rept(" ", 500)), 500)) End With Select Case Extension Case Is = "xlsx" ActiveWorkbook.SaveAs GuardarComo Case Is = "xlsm" ActiveWorkbook.SaveAs GuardarComo, xlOpenXMLWorkbookMacroEnabled Case Is = "csv" ActiveWorkbook.SaveAs GuardarComo, xlCSV Case Else ActiveWorkbook.SaveAs GuardarComo End Select End If End Sub
Descargar el archivo de ejemplo
045 – Cuadro de diálogo Guardar como GetSaveAsFilename – EXCELeINFO.zip
Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.