Enviar a varios formatos reporte desde barra de opciones

Necesito enviar desde una barra de opciones un reporte que se muestra en vista previa a los siguientes tipos de archivo:

PDF, EXCEL, WORD, HTML, TEXTO y a un correo como archivo adjunto en PDF.

1 respuesta

Respuesta
1

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.

Definitivamente me ha salvado pensé que no era posible, vuelvo y le repito usted supera a otros ya que es el único que da solución a situaciones difíciles su ejemplo lo he implementado y funciona a las mil maravillas.

Eduardo le retiro mis agradecimientos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas