测试连接错误。
SQL.ActiveConnection = Cn
FROM (OPENROWSET('Microsoft.Jet.OLEDB.4.0','Data Source=C:\Path\To\File.xls;Extended Properties=Excel 8.0;HDR=YES', Sheet1$)) wb
End Sub
答案 0 :(得分:1)
如果你有SSIS,那么走这条路会更好更快。这样做意味着它不再是出口过程;它将是一个导入,将在SQL Server和SSIS中执行所有任务。
答案 1 :(得分:1)
考虑使用OPENROWSET到Excel工作簿的SQL Server分布式查询。下面假设您具有运行MSSQL命令的权限,并且您的Excel文件具有标题:
INSERT INTO [dbSomething].[dbo].[tbl_Test] ([MyFieldValue])
SELECT wb.ColumnName
FROM (OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Data Source=C:\Path\To\File.xlsx;Extended Properties=Excel 12.0;HDR=YES', Sheet1$)) wb
或者对于较旧的工作簿类型:
INSERT INTO [dbSomething].[dbo].[tbl_Test] ([MyFieldValue])
SELECT wb.ColumnName
FROM (OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Data Source=C:\Path\To\File.xls;Extended Properties=Excel 8.0;HDR=YES', Sheet1$)) wb
要运行此操作查询,请将整个SQL放在VBA字符串中并执行连接。不需要参数化,因此不需要ADO命令对象。
strSQL = "INSERT INTO ... wb"
Cn.Execute strSQL