Martha se requieren de 3 funciones y crear un grupo de opciones en XML y adicionarlo en la tabla USysRibbons, por ejemplo, en el campo RibbonName ingreses MyReport y en el campo RibboXML el siguiente script
CREAR EL XML
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="true">
<tabs>
<tab id="MyReport" label="Imprimir reporte y opciones de visualización">
<group idMso="GroupPrintPreviewPrintAccess" />
<group idMso="GroupPageLayoutAccess" />
<group idMso="GroupZoom" />
<!-- <group id="ListCommands" label="Imprimir">
<button idMso="FilePrintQuick" keytip="q" size="large"/>
<button idMso="PrintDialogAccess"
label="Print Dialog"
keytip="d" size="large"/>
</group>-->
<group id="ExportCmds" keytip="e" label="Exportar datos">
<button idMso="PublishToPdfOrEdoc" keytip="p" size="large"/>
<button id="ExportExcel" label="Excel"
imageMso="ExportExcel" size="large"
onAction="=MiExporta('XLS')"/>
<button id="ExportWord" label="Word"
imageMso="ExportWord" size="large"
onAction="=MiExporta('RTF')"/>
<button id="ExportTextFile" label="Texto"
imageMso="ExportTextFile" size="large"
onAction="=MiExporta('TXT')"/>
<button id="ExportHtml" label="Documento HTML"
imageMso="ExportHtmlDocument" size="large"
onAction="=MiExporta('HTML')"/>
<button id="CreateEmail" label="Reporte Email (PDF)"
imageMso="FileSendAsAttachment"
enabled="true" size="large"
onAction= "=MiCorreo()"/>
</group>
En un módulo ingrese estas 3 funciones:
FUNCIÓN MiExporta
Para Exportar a PDF, EXCEL, WORD, HTML y TEXTO
Public Function MiExporta(strFormat As String)
Dim strFileType As String
Dim strFileFilter As String
Dim strFileName As String
Dim subcarpeta As String
Select Case strFormat
Case "RTF" ' word
strFileType = acFormatRTF
strFileFilter = "*.rtf"
subcarpeta = "WORD"
Case "XLS" ' excel
strFileType = acFormatXLS
strFileFilter = "*.XLS"
subcarpeta = "EXCEL"
Case "TXT" ' text
strFileType = acFormatTXT
strFileFilter = "*.txt"
subcarpeta = "TEXTO"
Case "HTML"
strFileType = acFormatHTML
strFileFilter = "*.html"
subcarpeta = "HTML"
Case "PDF"
strFileType = acFormatPDF
strFileFilter = "*.pdf"
subcarpeta = "PDF"
Case Else
Exit Function
End Select
strFileName = SaveFileName(strFileType, strFileType, strFileFilter, subcarpeta)
If strFileName <> "" Then
DoCmd.OutputTo acOutputReport, Screen.ActiveReport.Name, strFileType, strFileName
End If
End Function
FUNCIÓN MICORREO
Para enviar por email el reporte como adjunto y formato PDF
Public Function MiCorreo()
On Error Resume Next
DoCmd.SendObject acSendReport, Screen.ActiveReport.Name, acFormatPDF
End Function
Adicione a los reportes en Propiedades, Otros, Nombre de la banda de opciones MyReport.
Cuando abra el reporte obtendrá algo como:
Observe la cinta de opciones en la parte superior hay un grupo "Exportar datos", hay 5 opciones de exportar y una opción para enviar email Reporte Email (PDF).
Opcionalmente se requiere esta función para exportar a determinada carpeta. La requiere la función MiExporta.
FUNCION COMPLEMENTARIA
Public Function SaveFileName(strTitle As String, _
strFilterText As String, _
strFilter As String, subFolder As String) As String
Dim f As FileDialog
Dim strF As String
Dim strExt As String
Set f = Application.FileDialog(msoFileDialogSaveAs)
f.Title = strTitle
'f.Filters.Add strFilterText, strFilter ' not supported with save as
f.InitialFileName = CurrentProject.Path & "\" & subFolder & "\"
If f.Show = True Then
strF = f.SelectedItems(1)
strExt = Split(strFilter, "*")(1)
If InStr(strF, strExt) = 0 Then
' user did not type extension
strF = strF & strExt
End If
SaveFileName = strF
End If
End Function
Martha, esta es unas de las ventajas de NO ocultar la venta de Access con el supuesto que "se vea más profesional la aplicación", es un error toda vez que no puede aprovechar las bondades que le ofrece la cinta de opciones, de lo contrario tendría que hacerlo por código, si le interesa también tengo esta alternativa.
Los usuarios de TodoExpertos que les interese un ejemplo sobre esta respuesta lo pueden solicitar a [email protected] en el asunto anotar "Me interesa la opción exportar con cinta de opciones".
Me cuenta si lo pudo adaptar, no obstante, como tiene mi correo puede consultarme las dudas al respecto.