Access自定义导出HTML报表
Hi,大家好!
在日常工作中,我们经常需要将 Access 中的数据分享给没有安装 Access 的同事,或者发布到公司内网上。截图、发 Excel 文件都或多或少有些不便。今天,我将带你解锁一个非常实用的技能——将 Access 数据导出为 HTML 文件。
这不仅能生成任何设备都能完美打开的报表,还能通过自定义,让你的数据报表看起来像一个专业的网页。
为什么要导出为 HTML?
通用性强:无需任何特定软件,有浏览器就能打开,手机、平板、电脑全平台兼容。
格式稳定:不像 Excel 在不同设备上可能格式错乱,HTML 的显示效果非常稳定。
易于分享:一个轻量的 .html 文件,通过邮件、微信发送都非常方便。
1创建表与窗体
首先,我们先准备一张表,如果你有现成的表也OK,表有了,那就可以创建一个窗体了,像这样,放一个按钮就可以了。

2添加代码
接着,我们就可以来添加代码了。
Private Sub Command0_Click()Dim rs As DAO.RecordsetDim html As StringDim stream As Object' 打开记录集Set rs = CurrentDb.OpenRecordset("SELECT * FROM tblLanguage")' 构建HTML头部(关键:声明UTF-8编码)html = "<!DOCTYPE html>" & vbCrLfhtml = html & "<html lang='zh-CN'>" & vbCrLfhtml = html & "<head>" & vbCrLfhtml = html & "<meta charset='utf-8'>" & vbCrLfhtml = html & "<title>测试列表</title>" & vbCrLfhtml = html & "<style>" & vbCrLfhtml = html & " body { font-family: 'Microsoft YaHei', Arial, sans-serif; margin: 20px; }" & vbCrLfhtml = html & " table { border-collapse: collapse; width: 100%; }" & vbCrLfhtml = html & " th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }" & vbCrLfhtml = html & " th { background-color: #4CAF50; color: white; }" & vbCrLfhtml = html & " tr:nth-child(even) { background-color: #f2f2f2; }" & vbCrLfhtml = html & "</style>" & vbCrLfhtml = html & "</head>" & vbCrLfhtml = html & "<body>" & vbCrLfhtml = html & "<h1>测试列表</h1>" & vbCrLf' 构建表格html = html & "<table>" & vbCrLf' 表头html = html & "<thead><tr>"Dim fld As DAO.FieldFor Each fld In rs.fieldshtml = html & "<th>" & fld.Name & "</th>"Next fldhtml = html & "</tr></thead>" & vbCrLf' 数据行html = html & "<tbody>" & vbCrLfDo While Not rs.EOFhtml = html & "<tr>"For Each fld In rs.fieldshtml = html & "<td>" & Nz(fld.value, "") & "</td>"Next fldhtml = html & "</tr>" & vbCrLfrs.MoveNextLoophtml = html & "</tbody>" & vbCrLfhtml = html & "</table>" & vbCrLfhtml = html & "</body>" & vbCrLfhtml = html & "</html>"' === 关键:使用ADODB.Stream以UTF-8编码写入文件 ===Set stream = CreateObject("ADODB.Stream")With stream.Type = 2 ' adTypeText 文本模式.Charset = "utf-8" ' 设置UTF-8编码.Open.WriteText html ' 写入HTML内容.SaveToFile "C:\Users\Desktop\html\Employees_Custom.html", 2 ' adSaveCreateOverWrite.CloseEnd Withrs.CloseSet rs = NothingSet stream = NothingMsgBox "导出完成!", vbInformationEnd Sub核心思路:
用 DAO.Recordset 读取数据。
用 VBA 拼接出包含 CSS 样式的 HTML 字符串。
使用 ADODB.Stream 对象,以 UTF-8 编码将字符串写入文件(这是解决中文乱码的关键)。
3运行输出
最后,我们可以输出看一下效果,HTML的样式大概是这样的:

现在,你得到的不仅是一个数据报表,更是一个功能完备的迷你网页应用!
4总结
简单导出用 DoCmd.OutputTo,但要注意其局限性。
解决中文乱码,必须使用 ADODB.Stream 对象并设置 .Charset = "utf-8"。
自定义样式,通过拼接包含 <style> 标签的 HTML 字符串来实现。
数据安全,在将数据填入表格单元格 <td> 时,务必使用 HTMLEncode 函数进行转义,防止特殊字符(如 <、>)破坏页面结构。
增强交互,可以引入现成的前端框架(如 Bootstrap)和编写少量 JavaScript 来实现搜索、打印等高级功能。
掌握了这些方法,你的 Access 应用交付的将不再是冰冷的数据,而是体验更佳、更专业的数据产品。
下一篇我们来讲讲在表格的基础上加一些图表。
