通过 SQL 服务器中的链接服务器访问 OPEN Excel table
Accessing an OPEN Excel table via linked server in SQL Server
我在 Windows 10 64 位计算机上使用 Office 2016 32 位和 SQL 服务器 64 位。我已经安装了驱动程序 Microsoft Access Database Engine 2010 Redistributable.
下面的代码允许我从 SQL 服务器的 closed Excel 工作簿中成功读取 sheet 中的行。
EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
GO
EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
GO
EXEC sp_addlinkedserver
@server = 'ExcelServer2',
@srvproduct = 'Excel',
@provider = 'Microsoft.ACE.OLEDB.12.0',
@datasrc = 'C:\Temp\book2.xlsx',
@provstr = 'Excel 12.0;IMEX=1;HDR=YES;'
SELECT * FROM ExcelServer2...[Sheet1$]
但是,如果工作簿是 open,那么我会收到以下错误:
Msg 7399, Level 16, State 1, Line 1
The OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "excelserver2" reported an error. The provider did not give any information about the error.
Msg 7303, Level 16, State 1, Line 1
Cannot initialize the data source object of OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "excelserver2".
有什么方法可以从 open 工作簿中读取行吗?
这不是一个真正的答案,但它是一个很好的解决方法。
我有两份练习册。
- 一个副本称为 "MyFile.xlsm",我一直打开它 - 我正在处理和更新
- 一个副本被称为 "MyFileCopy.xlsm",我一直关闭它 - 它已连接到数据库
我在打开的工作簿上工作,当我想要的时候,我只是 运行 下面的宏更新关闭的工作簿,而不影响我打开的工作簿
Sub copyFile()
ActiveWorkbook.SaveCopyAs "C:\MyDirectory\MyFileCopy.xlsm"
End Sub
我在 Windows 10 64 位计算机上使用 Office 2016 32 位和 SQL 服务器 64 位。我已经安装了驱动程序 Microsoft Access Database Engine 2010 Redistributable.
下面的代码允许我从 SQL 服务器的 closed Excel 工作簿中成功读取 sheet 中的行。
EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
GO
EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
GO
EXEC sp_addlinkedserver
@server = 'ExcelServer2',
@srvproduct = 'Excel',
@provider = 'Microsoft.ACE.OLEDB.12.0',
@datasrc = 'C:\Temp\book2.xlsx',
@provstr = 'Excel 12.0;IMEX=1;HDR=YES;'
SELECT * FROM ExcelServer2...[Sheet1$]
但是,如果工作簿是 open,那么我会收到以下错误:
Msg 7399, Level 16, State 1, Line 1
The OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "excelserver2" reported an error. The provider did not give any information about the error.
Msg 7303, Level 16, State 1, Line 1
Cannot initialize the data source object of OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "excelserver2".
有什么方法可以从 open 工作簿中读取行吗?
这不是一个真正的答案,但它是一个很好的解决方法。
我有两份练习册。
- 一个副本称为 "MyFile.xlsm",我一直打开它 - 我正在处理和更新
- 一个副本被称为 "MyFileCopy.xlsm",我一直关闭它 - 它已连接到数据库
我在打开的工作簿上工作,当我想要的时候,我只是 运行 下面的宏更新关闭的工作簿,而不影响我打开的工作簿
Sub copyFile()
ActiveWorkbook.SaveCopyAs "C:\MyDirectory\MyFileCopy.xlsm"
End Sub