2016-03-08 128 views
0

我在Windows 10 64位機器上使用Office 2016 32位和SQL Server 64位。我已經安裝了驅動程序Microsoft Access數據庫引擎2010可再發行版通過SQL Server中的鏈接服務器訪問OPEN Excel表

以下代碼允許我成功讀取來自SQL Server的Excel工作簿中已關閉的表中的行。

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$] 

但是,如果工作簿是開放然後我得到以下錯誤:

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". 

是否有從一個開放工作簿讀取行什麼辦法?

回答

0

這不是一個真正的答案,但它是一個很好的解決方法。

我有兩份工作簿。

  1. 一個副本被稱爲「MyFile.xlsm」這是我保持開放的全部時間 - 這,我的工作和更新
  2. 一個副本叫我一直全封閉的時間「MyFileCopy.xlsm」 - 這連接到數據庫

我在打開的工作簿工作,當我想,我只是運行下面的宏操作將更新關閉的工作簿,而不會影響我打開的工作簿

Sub copyFile() 
    ActiveWorkbook.SaveCopyAs "C:\MyDirectory\MyFileCopy.xlsm" 
End Sub