分享

Access导入导出功能之格式化导出全讲解

 慕容谷 2025-01-17 发布于广东

格式化导出,是指ExportWithFormatting宏操作和DoCmd.OutputTo方法。

功能是将Access中的对象(表、查询、报表等),导出为Excel、pdf、txt、rtf等文件,其中最常用的是Excel和Pdf格式的文件。特点是格式化导出,导出的数据包含格式(主要针对导出为Excel),窗体、报表也包含样式(主要针对导出为pdf)。

01



参数说明

两种导出方式分别对应于宏和VBA两个不同的环境,用法基本一致,下面以ExportWithFormatting宏操作为例介绍:

图片

格式导出总共有八个参数,后四个基本可以忽略,所以也并不难掌握。

对于要导出的Access对象的类型和名称,直接选择即可。

不同的对象,可输出格式也不相同,如:导出表时可选择的输出格式:

图片

导出报表时可选择的输出格式:

图片

对于表、查询、窗体和报表,还可以导出为一个XML格式的文件,在宏操作中没有列出,DoCmd.OutputTo参数成员中也没有列出它。可以通过以下方法导出:(或使用本文后面讲解的方法)

图片

我们常用的无非就是Excel和PDF这两种。导出为Excel是以表格的形式保存,所以导出的只有数据相关内容和格式部分,而PDF不仅能导出数据,还有窗体、报表中的样式,相当于对它们进行“打印预览”显示的结果导出为PDF文件。这样的特点,对于导出表、查询、模块等对象可能影响不大,但是对于窗体、报表,尤其是对于报表的导出会产生影响。因为我们要输出的报表,往往是动态筛选、处理后的结果,那才是想要导出内容,本文先不作这方面的讲解,先介绍怎样将这些Access对象导出。

输出文件”参数,设置导出文件的路径和文件名,实际操作中可按以下方式处理

1、将此参数留空。这样当执行导出时,会弹出对话框,让用户自行设置导出的位置和文件名称,比较灵活。

2、直接输入路径和文件名,与《Access导入导出功能之导入导出电子表格全讲解》中的“文件名”用法相同,也支持相对路径(如:..\销售明细表.xlsx)和字符串形式(如:= CurrentProject.Path & '\销售明细表.xlsx')。

3、导出的文件名可自己设置。无论设置的文件扩展名是什么,实际导出的文件都是“输出格式”中选择的格式。

4、这里的路径是电脑中存在的路径,不支持新建路径(文件夹)。

5、输出文件已经存在于磁盘中时,宏操作会提示是否替换或重新设置文件名而使用DoCmd.OutputTo方法时会直接覆盖掉原文件,要特别注意。这里与ImportExportSpreadsheet宏操作和DoCmd.TransferSpreadsheet方法导出为Excel电子表格有本质的区别。因为不会将不同的表(查询)导出到一个Excel文件中。

“自动启动”参数,是指导出完成后,是否立即使用默认程序打开文件。

“模板文件”和“编码”参数,则主要是针对导出为Html(htm)网页文件而言,选择模板后,导出的文件会继承模板中的样式(Style)设置,比如文件中的css样式。设置模板文件后,就可以选择编码,明确以哪个编码格式输出文件。

至于“输出质量”,一般也无需关注,选择屏幕和打印通常情况下感觉不到区别。

02



特别说明

使用宏操作进行导出,八个参数中有六个都可以直接选择,操作很直观。而在VBA中使用的是DoCmd.OutputTo方法,参数中需要着重说明一下“输出格式”参数,即OutputFormat参数,它的类型为AcFormat,本应该是个枚举常量,在宏操作中直接选择就好,但是VBA中不能自动列出成员以选择,需要自行输入,下面是常用的枚举值:

  • acFormatPDF: PDF格式 (PDF)
  • acFormatRTF: RTF格式(RTF)
  • acFormatTXT: 文本文件 (TXT)
  • acFormatXLS: Excel 97-2003 工作簿 (XLS)
  • acFormatXLSX: Excel 工作簿 (XLSX)
  • acFormatHTML: HTML (HTML)

例如,导出一个窗体记录到xlsx文件:

DoCmd.OutputTo acOutputForm, '店员表窗体', acFormatXLSX, '店员列表.xlsx'

这时我们会想,这个OutputFormat参数既然需要手动输入,怎么记忆它呢

我要说的是,根本就无需记忆这些枚举值,这正是DoCmd.OutputTo方法的特别之处。因为这个参数对用户输入的容错度实在是太高了!比如还是要输出一个xlsx文件,你可以到ExportWithFormatting宏操作中把输出格式中的内容复制过来:

DoCmd.OutputTo acOutputForm, '店员表窗体', 'Excel 工作簿(*.xlsx)', '店员列表.xlsx'

或者在VBA的立即窗口中获取到常量acFormatXLSX的具体值:

图片

从而参数使用这个'Microsoft Excel Workbook (*.xlsx)';而这个都不足以体现VBA对它的容错度。你甚至可以使用'(*.xlsx)'、'.xlsx',都能够正常输出文件,我最终选择的是使用'xlsx',简单易用,完全不需要记忆。其他格式以此类推

DoCmd.OutputTo acOutputForm, '店员表窗体', 'xlsx', '店员列表.xlsx'DoCmd.OutputTo acOutputForm, '店员表窗体', 'pdf', '店员列表.pdf'

像上述文中需要导出为'xml'文件,就可以使用这种方法。在宏设计中也是可以实现导出为'xml'文件的,我会专门针对宏参数另外写一篇文章。

只是要注意一点,输入的格式如果不被支持就会报错。

03



Word文件

最后再来说说输出到一个Word文件的问题。

其实格式化导出没有正宗的Wrod文件类型,然而其中的RTF格式,叫做“富文本格式”,它的格式感觉与2003版的Word文件(.doc)一样,所以,如果想得到一个Word文件,就可以这样导出:

DoCmd.OutputTo acOutputForm, '店员表窗体', 'RTF', '店员列表.doc'

导出的文件可用Word正常打开,几乎相当于一个Word文件了,完全可以作为导出为Word文件来使用,但它无法将打印预览中的全部格式导出(如果需要这些格式,请使用pdf格式)。在Access的打印预览中,也是这样给出的导出建议:

图片

遗憾的是导出时不支持使用docx扩展名。

04



其他

针对VBA中DoCmd.OutputTo导出时会自动覆盖原已存在的文件,而不会出现任何提示的情况,可以用VBA首先判断文件是否存在,或者使用类似Format(Now(), 'yyyymmdd_hhnnss')的动态文件名


END



导读:

Access导入导出功能之使用向导
Access导入导出功能之导入导出电子表格全讲解

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多