VBA中串連SQLSERVER資料庫例子_vb

來源:互聯網
上載者:User

我們在使用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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.