Curso Excel VBA y Macros – Cap. 45 – Cuadro de diálogo Guardar como usando GetSaveAsFilename

 <<CURSO COMPLETO EN YOUTUBE>>

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.

Cuadro de diálogo Guardar como.

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

<<CURSO COMPLETO EN YOUTUBE>>

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.

También te podría gustar...