Excel 2007窗体到SQL Server

我一直在寻找一个答案,而我将描述的问题没有成功。

我有一个Excel表,经常手动更新。 我被要求以实时的方式将每一行更改推送到一个Sql Server中。 我需要用户可以通过按保存button来保存一行到服务器。

在SSMS中,我已经能够使用OPENROWSET从服务器读取数据,例如:

SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=YES;Database=C:\tmp\test2.xlsm', 'SELECT * FROM [myrng]'); 

我也已经能够将数据从Excel插入到SQL Server中:

 Insert into NEWDB.dbo.master Select * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;HDR=YES;Database=C:\tmp\test2.xlsm','SELECT * FROM [myrng]') 

当我尝试将QUERY,INSERT或UPDATE数据返回到Excel文件仍然打开的服务器时出现问题。

我打算最终要做的是构build一个向导应用程序来填充一个Excel表,这个表可以在stream程结束时提交给相应的SQL Server表。

我一直在玩VBA和ADO,目前还没有成功,而且我曾经被build议使用DTS或SSIS,但是我需要Excel文件始终保持打开状态。

在此先感谢,罗德里戈。

您可以运行与Excel的连接:

 strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ActiveWorkbook.FullName _ & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";" ''Late binding, so no reference is needed Set cn = CreateObject("ADODB.Connection") cn.Open strCon ''A single value, but a query with parameters would be better ssql = "INSERT INTO [ODBC;DRIVER=SQL Server;SERVER=server;Trusted_Connection=Yes;DATABASE=Test].table_1 (Atext ) " _ & "Values ('" & Sheet1.[b3] & "')" cn.Execute ssql 

要么

 ssql = "INSERT INTO [ODBC;DRIVER=SQL Server;SERVER=server;" _ & "Trusted_Connection=Yes;DATABASE=Test].table_1 ( Atext ) " _ & "SELECT ACol FROM [Sheet1$b7:c9]" 

要么

 ssql = "INSERT INTO [ODBC;DRIVER=SQL Server;SERVER=server;" _ & "Trusted_Connection=Yes;DATABASE=Test].table_1 ( Atext ) " _ & "SELECT Acol FROM Anamedrange" 

如果HDR = No,则使用F1,F2等来表示各列的名称,从范围的第一列开始编号。

这也适用于我在Excel中,对于这个例子我使用了Microsoft ActiveX数据对象xx库的引用,但是后期绑定也可以。

 Dim cn As New ADODB.Connection Dim cmd As New ADODB.Command cn.Open servercon cmd.ActiveConnection = cn cmd.CommandText = "insert_user" ''Stored procedure cmd.CommandType = adCmdStoredProc cmd.Parameters("@username").Value = Worksheets("Sheet1").Cells(3, 2) cmd.Execute