sub test() '定義過程名稱
Dim i As Integer, j As Integer, sht As Worksheet 'i,j為整數變數;sht 為excel工作表物件變數,指向某一工作表
Dim cn As New ADODB.Connection '定義資料連結對象 ,儲存串連資料庫資訊;請先添加ADO引用
Dim rs As New ADODB.Recordset '定義記錄集對象,儲存資料表
Dim strCn As String ,strSQL as String '字串變數
'下面的語句將讀取資料表資料,並將它儲存到excel工作表中:畫兩張表想像一下,工作表為一張兩維表,記錄集也是一張兩維表
strSQL = "select 欄位1,欄位2 from 表名稱" '定義SQL查詢命令字串
cn.Open strCn '與資料庫建立串連,如果成功,返回連線物件cn
rs.Open strSQL, cn '執行strSQL所含的SQL命令,結果儲存在rs記錄集對象中
i = 1
Set sht = ThisWorkbook.Worksheets("sheet1") '把sht指向當前活頁簿的sheet1工作表
Do While Not rs.EOF '當資料指標未移到記錄集末尾時,迴圈下列操作
sht.Cells(i, 1) = rs("欄位1") '把目前記錄的欄位1的值儲存到sheet1工作表的第i行第1列
sht.Cells(i, 2) = rs("欄位2") '把當前欄位2的值儲存到sheet1工作表的第i行第2列
rs.MoveNext '把指標移向下一條記錄
i = i + 1 'i加1,準備把下一記錄相關欄位的值儲存到工作表的下一行
Loop '迴圈
rs.Close '關閉記錄集,至此,程式將把某資料表的欄位1和欄位2儲存在excel工作表sheet1的第1、2列,行數等於資料表的記錄數
'下面的語句將讀取excel工作表資料,並將之簡單計算後存入資料庫,這裡使用上面程式中的一些變數
'假設分別讀取工作表sheet1第5行至第500行的第8列和第9列已存在的資料,然後將它們相乘,並將積存入資料庫的某個表
strSQL="" '清空上面定義的變數
for i=5 to 500 '迴圈開始,i從5到500
strSQL=strSQL & "insert into 表名(欄位) values(" & sht.cells(i,8)*sht.cells(i,9) & ") ;" '構造SQL命令串
next
'至此產生一串SQL命令串,儲存的內容大概為:insert into 表名(欄位) values(數值1);insert into 表名(欄位) values(數值2);
cn.execute strSQL '執行該SQL命令串,如果SQL命令沒有錯誤,將在資料庫中添加501個記錄;也可以用rs.open strSQL,cn 執行
cn.close '關閉資料庫連結,釋放資源
end sub