我們在使用excel編程時,很多時候都需要使用數據庫。
那么如何連接數據庫然后從數據庫讀取數據呢?
VBA 連接 SQL SERVER 數據庫 實例:
Dim strConn As String, strSQL As String Dim conn As ADODB.Connection Dim ds As ADODB.Recordset Dim col As Integer '連接數據庫的字符串 strConn = "Provider=SQLOLEDB.1;Persist Security Info=True;User ID=[user];Password=[password];Initial Catalog=[database];Data Source=[數據庫IP地址或數據庫服務器名稱];Connect Timeout=720; " '查詢語句,如果sql語句很長可以用strSQL=strSQL+來連接分成多段的語句,如果語句很短可以只寫在一行上。 strSQL = "select * from Hy_KPI_Shop_Dept_WeekRpt " strSQL = strSQL+"where sdate='2014-01-01' order by sdate,shopid " Set conn = New ADODB.Connection Set ds = New ADODB.Recordset '打開數據庫連接 conn.Open strConn '該句和數據庫連接字符串處的Connect Timeout=720,表示說如果語句運行時間很長,這兩句可以延長vba的等待時間,沒有這兩句,vba往往會報查詢超時。 conn.CommandTimeout = 720 With ds '根據查詢語句獲得數據 .Open strSQL, conn '自動控制加入所有列標題 For col = 0 To ds.Fields.Count - 1 '請注意Offset(0, col)中的參數一定要正確,該句表示標題將會寫在第一行,從A1單元格開始,如果不想寫入標題行,可將下面這句注釋掉。 Worksheets("門店各課KPI周報").Range("A1").Offset(0, col).Value = ds.Fields(col).Name Next '加入所有行數據,該句表示查詢結果將會寫在第一行,從A1單元格開始,但是由于標題行寫在第一行了,所以實際這一行從標題下的一行寫入。 Worksheets("sheet1").Range("A1").Offset(1, 0).CopyFromRecordset ds End With '關閉數據庫連接和清空資源 Set ds = Nothing conn.Close Set conn = Nothing
新聞熱點
疑難解答
圖片精選