martes, 16 de abril de 2019

VBA: Guardar como .Dialogs(xlDialogSaveAs)

Aprenderemos otro sencillo método para guardar como... nuestros libros de trabajo de manera alternativa al clásico Workbooks.SaveAs filename.

El caso será muy simple, bastará emplear y llamar a las ventanas de diálogos integrados, y en concreto a la de 'Guardar como': .Dialogs(xlDialogSaveAs)

Con esta ventana podemos indicar hasta seis argumentos, que son en parte las opciones estándar de la ventana:

VBA: Guardar como .Dialogs(xlDialogSaveAs)


Arg1 (document_text): ruta y nombre del fichero propuesto
Arg2 (type): tipo de formato... serían los empleados por los parámetros de XlFileFormat
Arg3 (password): la contraseña del fichero
Arg4 (backup): TRUE o FALSE si queremos o no guardar una copia de seguridad del fichero
Arg5 (write_password): contraseña de escritura
Arg6 (read_only_rec): TRUE o FALSE para recomendar al abrir que sea solo lectura


Comenzaremos insertando un módulo estándar en nuestro proyecto de VB:

Sub VentanaDialogoGuardarComo()
Dim ruta As String
'ruta y nombre por defecto...
ruta = ThisWorkbook.Path & "\PruebaGuardado.xlsm"

'abrirá una ventana diálogo para cambiar la ubicación donde se guardará.
'el Arg1 será la ruta y nombre del fichero
'y el Arg2 el tipo de fichero a guardar....
Guardando = Application.Dialogs(xlDialogSaveAs).Show(arg1:=ruta, _
                    arg2:=xlOpenXMLWorkbookMacroEnabled)

End Sub



En nuestro ejemplo solo configuramos la ruta y el tipo del fichero, sin considerar contraseñas o copias de seguridad...

Otra ventana diálogo interesante es .Dialogs(xlDialogSendMail) que permite enviar el libro de trabajo adjunto a la dirección y con el asunto deseado empleando Outlook.

Insertando un módulo estándar en nuestro proyecto de VB:

Sub EnvioEmail()
'En el ejemplo de código siguiente se abre un mensaje de correo electrónico en Microsoft Outlook con el libro adjunto actual.
Application.Dialogs(xlDialogSendMail).Show arg1:="excelforo@excelforo.com", _
            arg2:="Asunto del email...", _
            arg3:=True
            
End Sub



En este caso solo tenemos tres argumentos
recipients, subject, return_receipt
Arg1 (recipients): dirección de email del destinatario
Arg2 (subject): Asunto del email
Arg3 (return_receipt): TRUE o FALSE si queremos confirmación de la recepción del email.


Una ventana diálogo mas, también curiosa: .Dialogs(xlDialogProperties) o su equivalente .Dialogs(xlDialogSummaryInfo)

VBA: Guardar como .Dialogs(xlDialogSaveAs)



Insertando un módulo estándar en nuestro proyecto de VB:

Sub CambioPropiedadesFichero()
Application.Dialogs(xlDialogProperties).Show Arg1:="Excelforo", _
                        Arg2:="Cambio Propiedades", _
                        Arg3:="Ismael Romero (el autor)", _
                        Arg4:="Palabras claves (Excel, ventanas diálogo..)", _
                        Arg5:="Comentarios sobre la programación..."
'o con la otra posibilidad
'Application.Dialogs(xlDialogSummaryInfo).Show Arg1:="Excelforo", _
                        Arg2:="Cambio Propiedades", _
                        Arg3:="Ismael Romero (el autor)", _
                        Arg4:="Palabras claves (Excel, ventanas diálogo..)", _
                        Arg5:="Comentarios sobre la programación..."
End Sub



Lo malo de estos cuadros diálogo (y del resto) es la limitación de configurar los argumentos definidos...

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.