2010-09-22 100 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) 
相关问题