MySQL 是熱門 Web 資料庫,但防火牆常封鎖 3306 埠導致無法直接 ODBC 連線。本文介紹透過 HTTP + ActiveX 控制項繞過埠限制,將 MySQL 資料同步至本地 Access 的方案。
[MySQL on Host] → [PHP 腳本輸出 HTML 表格/CSV] → [Access Form WebBrowser 控制項導航/擷取] → [Access 本地資料表]
Sales_Data,結構與遠端 MySQL 表完全一致。WebBrowser1。WebBrowser1.Navigate "https://host.com/phpmyadmin/login.php"。DocumentComplete),導航至資料匯出頁:WebBrowser1.Navigate "https://host.com/export.php?table=Sales_Data&format=csv"。Sales_Data。Private Sub Form_Load()
Set wb = Me.WebBrowser1.Object
wb.Silent = True
wb.Navigate "https://host.com/login.php"
End Sub
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
If InStr(URL, "export.php") > 0 Then
' 解析 HTML 表格或下載 CSV
Dim doc As HTMLDocument: Set doc = wb.Document
Dim tbl As HTMLTable: Set doc.getElementsByTagName("table")(0)
' 迴圈列/欄寫入本地 Recordset...
' 或使用 wb.ExecWB OLECMDID_SAVEAS 儲存 CSV 再匯入
End If
End Sub
| 方案 | 優勢 |
|---|---|
| MySQL ODBC + SSH Tunnel (Putty/SSH.NET) | 加密通道、標準 ODBC、支援所有 Access 功能 |
| REST API + JSON (PHP/Laravel/Node.js) | 結構化、版本控管、易除錯、跨平台 |
| 雲端同步服務 (AWS DMS、Azure Data Factory) | 企業級、排程、監控、增量同步 |
| Python 腳本 (pymysql + pyodbc/pandas) | 自動化、可排程、邏輯集中、易維護 |
ActiveX 方案屬於舊技術棧 (IE 引擎、相容性風險),新專案請採用 API + 現代連接器架構。