2009-11-16 1 views
5

Как добавить кнопку в отчет Microsoft Access для экспорта в Excel/PDF?Как добавить кнопку в отчет Access для экспорта в Excel/PDF?

+5

Как это не программирование? – JeffO

+0

GuinnessFam. Я согласился с вами и поднял это как вопрос в meta.stackoverflow.com. Нежные люди согласились с моим вопросом, чтобы они снова открыли этот вопрос. –

+0

Я думаю, что это хороший вопрос, но он выглядит как один или комментарии, предполагающие, что это может быть проблематичный вопрос, возможно, были удалены. Это правда? Для контекста, четыре человека поддержали JeffO's «Как это не программирование?» комментарий, и @ tony-toews ответил на несуществующий комментарий от GuinnessFam. Может кто-нибудь объяснить? –

ответ

2

Кристиан предложил кнопку команды в форме, но вы также можете создать панель инструментов для отчета с помощью кнопки на ней, которая будет экспортировать отчет в Excel. Но, как говорит Тони, результаты будут уродливыми.

Я бы сказал, что более полезной будет кнопка, которая экспортирует данные, отображаемые в отчете, в электронную таблицу Excel. Форматирование не было бы таким же красивым, но было бы намного более полезным и манипулируемым. Для этого вы должны использовать DoCmd.TransferSpreadsheet и сохраненный запрос в качестве источника экспорта (что эквивалентно источнику данных отчета).

+0

Можно получить довольно хорошее форматирование в Excel с помощью HTML, и не так сложно использовать шаблон в VBA и заполнить пробелы. – Fionnuala

+0

Применяет ли Excel HTML, не делая что-то особенное? Word не справляется с этим через автоматизацию (или, по крайней мере, я не узнал, как это сделать) - это приводит меня к моей основной причине для комментариев, и это http://www.codinghorror.com/blog/archives /001311.html, где мы читаем лекции по разбору HTML. Есть ли доступное для использования решение для анализа HTML? Мне это нужно плохо! –

3

Modules: Sample Excel Automation - клетка за клеткой, которая является медленным

Modules: Transferring Records to Excel with Automation

Примечание хотя автоматизация Excel предложил фактически против запроса в качестве экспорта отчетов в Excel делает их чрезвычайно некрасиво. Если я правильно помню, эта функция была удалена в Access 2007.

A2000ReportToPDF - это база данных Access 2000, содержащая функцию преобразования файлов отчетов и моментальных снимков в документы PDF. Нет драйвера принтера PDF. Свободно.

+0

Тони, согласно Аллену Брауну в http://allenbrowne.com/Access2007.html проблема экспорта в Excel была исправлена ​​в A2007 SP2. –

1

AFAIK вы не можете «добавить» его в отчет. Но в том виде, открывает отчет, вы можете добавить кнопку со следующим кодом:

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

Only Access 2007 has support for PDF's. Поэтому вам нужно либо установить принтер PDF, либо использовать предложение Tony Toews

+0

Кристиан, вы когда-нибудь пытались экспортировать отчет в Excel? Это действительно уродливо. На самом деле A2007 имеет встроенную поддержку PDF, поэтому я должен был упомянуть об этом. –

+0

@Tony Toews - только потому, что вы можете это не значит, что вам нужно ... –

+0

Экспорт в PDF очень легко добавить в более ранние версии Access, либо с помощью конвертера снимков Stephen Lebans, либо с помощью чего-то вроде PDFCreator, который можно автоматизировать от VBA. –

5

Я только что объединил некоторые из предыдущих ответов, и это мой последний блок кода, который экспортирует отчет в excel и затем открывает указанный файл 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