2010-09-22 123 views
7

我已經創建了一個Excel工作表,它執行一些查找來格式化需要插入到另一個表中的數據。這個Excel工作簿需要提供給一些可以自由添加一些新行的用戶,然後需要能夠點擊「插入數據庫」按鈕並將記錄轉換並作爲新記錄插入到SQL表中。我正在使用Excel 2010和SQL Server 2008.我有一個連接到數據庫,因爲我正在使用它來拉回一些數據以驗證新添加的行,但我不知道如何將數據插回。將Excel中的數據插入到SQL數據庫中DB

回答

13

你可以做很多與ADO:

Dim cn As New ADODB.Connection 

''You should probably change Activeworkbook.Fullname to the 
''name of your workbook 
strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" _ 
& ActiveWorkbook.FullName _ 
& ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";" 

cn.Open strCon 

s = "INSERT INTO [ODBC;Description=TEST;DRIVER=SQL Server;" _ 
& "SERVER=Server;Trusted_Connection=Yes;" _ 
& "DATABASE=test].SomeTable (Col1, Col2, Col3, Col4) " _ 
& "SELECT a.Col1, a.Col2, a.Col3, a.Col4 " _ 
& "FROM [Sheet2$] a " _ 
& "LEFT JOIN [ODBC;Description=TEST;DRIVER=SQL Server;" _ 
& "SERVER=Server;Trusted_Connection=Yes;" _ 
& "DATABASE=test].SomeTable b ON a.Col1 = b.Col1 " _ 
& "WHERE b.Col1 Is Null" 
cn.Execute s 

您還可以使用ACE連接:http://www.connectionstrings.com/或OPENROWSET和SQL服務器連接。在所有情況下,根據您的註冊表設置,您可能在列中出現混合數據類型問題(http://forum.lessthandot.com/viewtopic.php?f=17&t=12043&p=59669&hilit=excel#p59669

+1

輝煌,謝謝。我不知道你可以從宏內獲得ADO,當我發現它變得很容易(如下面的ansert所示:)) – Ben 2010-09-22 10:32:24

0

在excel中修改數據後,需要生成Update語句,按下「update」按鈕即可執行。因此,將執行更新和插入語句。然後必須將查詢發送到在Excel中刷新數據(恕我直言)

3

我發現在一個宏內,您可以創建一個ADO連接,方法是向「Microsoft ActiveX數據對象6.0庫「。一旦你已經打開了宏內的連接,您可以創建插入語句,並通過使用connection.Execute(聲明)方法執行:

Dim item as String = "Insert Into MyTable(ColA,ColB) VALUES('Foo', 'Bar')" 
Dim thisCon As New ADODB.Connection 
thiscon.Open("ConnectionString") 
thisCon.Execute (item) 
相關問題