Office 系列僅被開發 20% 功能,VBA 結合 ADO 物件可輕鬆實現跨資料庫資料遷移。本文示範透過 MyODBC 連接 MySQL,將 SQL Server 7.0 softinfo 表資料逐筆轉入 MySQL。
mysql1),指向目標 MySQL 資料庫。Sub ConnectMySQL()
Dim sConnect As String, sSql As String, i As Long
Dim cnMSSQL As New ADODB.Connection
Dim cnMySQL As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim cm As New ADODB.Command
' 連接 MySQL
sConnect = "dsn=mysql1"
cnMySQL.Open sConnect
' 連接 SQL Server 7.0
sConnect = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;pwd=123456;Initial Catalog=softdown;Data Source=ntserver"
cnMSSQL.Open sConnect
' 查詢來源資料
sSql = "SELECT * FROM softinfo ORDER BY softnum"
rs.Open sSql, cnMSSQL, 1, 1
' 逐筆寫入 MySQL
While Not rs.EOF
sSql = "INSERT INTO softinfo VALUES (" & _
Trim(rs(0).Value) & ",'" & Trim(rs(1).Value) & "'," & _
"'" & Trim(rs(2).Value) & "','" & Trim(rs(3).Value) & "'," & _
"'" & Trim(rs(4).Value) & "','" & Trim(rs(5).Value) & "'," & _
Trim(rs(6).Value) & "," & Trim(rs(7).Value) & ")"
cm.ActiveConnection = cnMySQL
cm.CommandType = adCmdText
cm.CommandText = sSql
cm.Execute
rs.MoveNext
Wend
' 清理物件
rs.Close: Set rs = Nothing
cnMySQL.Close: Set cnMySQL = Nothing
cnMSSQL.Close: Set cnMSSQL = Nothing
End Sub
宏寫好後,使用者只需點一下按鈕即可生成報表、同步資料。站在 Microsoft 巨人肩膀上,利用 Excel 進行二次開發,效率遠超自建報表系統。VBA 不只是病毒溫床,更是辦公自動化的利器。