2009-11-16 41 views
5

¿Cómo puedo agregar un botón a un informe de Microsoft Access para exportarlo a Excel/PDF?¿Cómo puedo agregar un botón a un informe de Access para exportarlo a Excel/PDF?

+5

cómo es esto no se programa? – JeffO

+0

GuinnessFam. Estuve de acuerdo con usted y planteé esto como una pregunta en meta.stackoverflow.com. Eneough people estuvo de acuerdo con mi pregunta, por lo que volvieron a abrir esta pregunta. –

+0

Creo que esta es una buena pregunta, pero parece que uno o los comentarios que sugieren que puede ser una pregunta problemática pueden haber sido eliminados. ¿Es eso cierto? Por contexto, cuatro personas votaron por JeffO: "¿Cómo es esto no programar?" comentar, y @ tony-toews respondió a un comentario inexistente de GuinnessFam. ¿Alguien puede explicar? –

Respuesta

2

Christian ha sugerido un botón de comando en un formulario, pero también podría crear una barra de herramientas para el informe con un botón que exportaría el informe a Sobresalir. Pero como Tony dice, los resultados serán feos.

Yo diría que más útil sería un botón que exporta los datos que se muestran en el informe a una hoja de cálculo de Excel. El formateo no sería tan bonito, pero sería mucho más útil y manipulable. Para eso, usaría DoCmd.TransferSpreadsheet y una consulta guardada como su fuente de exportación (equivalente a Recordsource del informe).

+0

Es posible obtener un formato bastante bueno en Excel con HTML, y no es tan difícil usar una plantilla en VBA y llenar los vacíos. – Fionnuala

+0

¿Acepta Excel HTML sin hacer algo especial? Word no lo maneja bien a través de la automatización (o, al menos, no he descubierto cómo), eso me lleva a mi principal razón para comentar, y eso es http://www.codinghorror.com/blog/archives /001311.html, donde se nos da una conferencia sobre el análisis de HTML. ¿Existe una solución de acceso utilizable para analizar HTML? Lo necesito malo! –

3

Modules: Sample Excel Automation - célula por célula que es lento

Modules: Transferring Records to Excel with Automation

nota de que la automatización de Excel sugerido es en realidad contra una consulta como exportar informes a Excel los hace muy feo. Si recuerdo correctamente, esta característica fue eliminada en Access 2007.

A2000ReportToPDF es una base de datos Access 2000 que contiene una función para convertir archivos de Informes y Snapshots a documentos PDF. No se requiere un controlador de impresora PDF. Gratis.

+0

Tony, de acuerdo con Allen Browne en http://allenbrowne.com/Access2007.html, el problema de exportación a Excel se corrigió en A2007 SP2. –

1

AFAIK no puede "agregarlo" al informe. Pero en el formulario que se abre el informe, se puede añadir un botón con el siguiente código:

DoCmd.OutputTo acOutputReport, "ReportName", acFormatXLS, 
"c:\YourFolderName\ReportName - " & Format(Date, "yyyymmdd") & ".xls" 

Only Access 2007 has support for PDF's. Por lo tanto, deberá instalar una impresora PDF o utilizar la sugerencia de Tony Toews

+0

Christian, ¿alguna vez ha intentado exportar un informe a Excel? Es muy feo En realidad, A2007 tiene compatibilidad integrada para PDF, así que debería haberlo mencionado. –

+0

@Tony Toews: solo porque no puede significar que ... –

+0

La exportación de PDF es realmente fácil de agregar en versiones anteriores de Access, ya sea con el convertidor de instantáneas de Stephen Lebans, o mediante el uso de algo como PDFCreator, que es automatizable de VBA. –

5

Acabo de combinar algunas de las respuestas anteriores y este es mi bloque de código final que exporta un informe a excel y luego abre dicho archivo de Excel.

Private Sub Command79_Click() 
'initialize variables 
Dim strReportName As String 
Dim strPathUser As String 
Dim strFilePath As String 

'set variables 
strReportName = "AlarmLetterForSF" 
strPathUser = Environ$("USERPROFILE") & "\my documents\" 
strFilePath = strPathUser & strReportName & Format(Date, "yyyymmdd") & ".xls" 

'export to excel 
DoCmd.OutputTo acOutputReport, strReportName, acFormatXLS, strFilePath 

'launch excel file 
Dim Shex As Object 
Set Shex = CreateObject("Shell.Application") 
Shex.Open (strFilePath) 

End Sub

Cuestiones relacionadas