Hi,大家好!
在日常工作中,我們經常需要將 Access 中的數據分享給沒有安裝 Access 的同事,或者發佈到公司內網上。截圖、發 Excel 文件都或多或少有些不便。今天,我將帶你解鎖一個非常實用的技能——將 Access 數據導出為 HTML 文件。這不僅能生成任何設備都能完美打開的報表,還能通過自定義,讓你的數據報表看起來像一個專業的網頁。
為什麼要導出為 HTML?
通用性強:無需任何特定軟件,有瀏覽器就能打開,手機、平板、電腦全平台兼容。
格式穩定:不像 Excel 在不同設備上可能格式錯亂,HTML 的顯示效果非常穩定。
易於分享:一個輕量的 .html 文件,通過郵件、微信發送都非常方便。
1創建表與窗體
首先,我們先準備一張表,如果你有現成的表也OK,表有了,那就可以創建一個窗體了,像這樣,放一個按鈕就可以了。
2添加代碼
接着,我們就可以來添加代碼了
Private Sub Command0_Click()
Dim rs As DAO.Recordset
Dim html As String
Dim stream As Object
' 打開記錄集
Set rs = CurrentDb.OpenRecordset("SELECT * FROM tblLanguage")
' 構建HTML頭部(關鍵:聲明UTF-8編碼)
html = "<!DOCTYPE html>" & vbCrLf
html = html & "<html lang='zh-CN'>" & vbCrLf
html = html & "<head>" & vbCrLf
html = html & "<meta charset='utf-8'>" & vbCrLf
html = html & "<title>測試列表</title>" & vbCrLf
html = html & "<style>" & vbCrLf
html = html & " body { font-family: 'Microsoft YaHei', Arial, sans-serif; margin: 20px; }" & vbCrLf
html = html & " table { border-collapse: collapse; width: 100%; }" & vbCrLf
html = html & " th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }" & vbCrLf
html = html & " th { background-color: #4CAF50; color: white; }" & vbCrLf
html = html & " tr:nth-child(even) { background-color: #f2f2f2; }" & vbCrLf
html = html & "</style>" & vbCrLf
html = html & "</head>" & vbCrLf
html = html & "<body>" & vbCrLf
html = html & "<h1>測試列表</h1>" & vbCrLf
' 構建表格
html = html & "<table>" & vbCrLf
' 表頭
html = html & "<thead><tr>"
Dim fld As DAO.Field
For Each fld In rs.fields
html = html & "<th>" & fld.Name & "</th>"
Next fld
html = html & "</tr></thead>" & vbCrLf
' 數據行
html = html & "<tbody>" & vbCrLf
Do While Not rs.EOF
html = html & "<tr>"
For Each fld In rs.fields
html = html & "<td>" & Nz(fld.value, "") & "</td>"
Next fld
html = html & "</tr>" & vbCrLf
rs.MoveNext
Loop
html = html & "</tbody>" & vbCrLf
html = html & "</table>" & vbCrLf
html = html & "</body>" & vbCrLf
html = 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
.Close
End With
rs.Close
Set rs = Nothing
Set stream = Nothing
MsgBox "導出完成!", vbInformation
End 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 應用交付的將不再是冰冷的數據,而是體驗更佳、更專業的數據產品。
下一篇我們來講講在表格的基礎上加一些圖表。**