巨集功能有點像是在Excel上的外褂程式 , 可以自己寫 , 也可以引用別人寫好的範本檔案

像是一連串的指令 , 用來作特定的事情 , 而這指令在Office產品上 , 可由VBA語言撰寫

VBA是VB的子集合 , 因此有些語法上相當的類似

本篇說明如何使用Excel的巨集功能讀取MySQL資料^^

Step1

由於需要連結MySQL , 因此必須先找到連結MySQL的方式

ODBC提供系統與資料庫連結的管道 , 必須先到MySQL官方網頁下載

http://dev.mysql.com/downloads/connector/odbc/5.1.html

目前出到5.1版(3.51有聽說過編碼問題 , 所以看到5.1我就直接拿來測了^^”)

Step2

裝好了以後 , 回到Excel

Excel2007的巨集放在檢視分類裡 , 最右邊的巨集快捷鍵

Excel2003則放置在工具分類裡 , 有個巨集選項

選擇Vistual Basic編輯器

Step3

由於待會取資料會使用到一些取資料的函式 , 必須先做一些引用的動作

在Vistual Basic編輯器的工具選項 , 有個設定引用項目

找到Microsoft ActiveX Data Object 2.8 xxxxxxxx

及Microsoft ActiveX Data Object Recordset 2.8 xxxxxxxx

將此兩項目打勾

Step4

*這次撰寫的功能是在資料框A1輸入ID , 然後A2則會顯示該使用者名稱*

在編輯器的左邊 , 選擇你想要輸入資料所在的工作表 , 最簡單就是點兩下Sheet1

在右邊打上下列資料 , 這段的意思是要偵測他只要工作表欄位有更動(假設他輸入過值)

把它Excel的欄位位置接收 , 判斷是否是A1這個欄位 , 如果是 , 啟用Search這個函式來搜尋

在Excel裡 , 欄位是透過Range來表示 , 而不管是Column或是Row , 都是從1開始

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 1 and Target.Row=1 Then
Search (Target.Text)
End If
End Sub

接收到來自上述的搜尋要求 , 進資料庫搜尋 , 並將回傳值丟給A2欄位(在Excel裡 , 欄位需選定Select才可把資料貼上 , ActiveCell.FormulaR1C1代表給選定欄位貼上這個動作)

Sub Search(ByVal id As String)
Dim conn As ADODB.ConnectionDim dbRecset As ADODB.Recordset
Dim sSQL As StringDim ss As String

初始化
Set dbRecset = New ADODB.Recordset
Set conn = New ADODB.Connection
conn.ConnectionString = “DRIVER={MySQL ODBC 5.1 Driver};SERVER=127.0.0.1;PORT=3306;DATABASE=test;UID=XXX;PASSWORD=OOO;OPTION=3”
conn.Open
sSQL = “SELECT * FROM Table where id='” & id & “‘”
dbRecset.CursorLocation = adUseClient
dbRecset.Open Source:=sSQL, ActiveConnection:=conn, CursorType:=adOpenForwardOnly, LockType:=adLockReadOnly, Options:=adCmdTextdbRecset.MoveFirst

取資料
While Not dbRecset.EOF
Range(“A2”).Select
ActiveCell.FormulaR1C1 = dbRecset(1)
dbRecset.MoveNext
Wend
dbRecset.Close
End Sub

存檔後 , 回到資料表 , 在A1上打ID , A2就可以顯示Name了^^

ps 1 資料庫的資料表就很單純的建立資料 , 不需要啥額外設定
Ps 2 如果要連到別的電腦 , 記得對方要開3306 , Excel必須啟用這個表單的巨集功能(為了安全理由 , 有些含有巨集的Excel檔案 , 開啟時巨集預設關閉 , 需手動開啟

參考網頁

http://forums.microsoft.com/MSDN-CHT/ShowPost.aspx?PostID=1384338&SiteID=14
http://scriptorium.serve-it.nl/view.php?sid=47
http://blog.okokgo.idv.tw/2007/09/vb6-mysql.html
http://gb.twbts.com/index.php/board,3.0.html

0 Responses

  1. Excel2007的巨集放在檢視分類裡 , 最右邊的巨集快捷鍵

    Excel2003則放置在工具分類裡 , 有個巨集選項

    選擇Vistual Basic編輯器

    Step3

    由於待會取資料會使用到一些取資料的函式 , 必須先做一些引用的動作

    在Vistual Basic編輯器的工具選項 , 有個設定引用項目

    找到Microsoft ActiveX Data Object 2.8 xxxxxxxx

    及Microsoft ActiveX Data Object Recordset 2.8 xxxxxxxx

    將此兩項目打勾

    請問我是用office XP版的excel裡面沒有找到Microsoft ActiveX Data Object 2.8 xxxxxxxx

    及Microsoft ActiveX Data Object Recordset 2.8 xxxxxxxx

    這二個選項,請問有其他解決方式嗎?

Leave a Reply

Your email address will not be published. Required fields are marked *