ADO错误消息

我正在尝试从另一个不同的(和closures的)工作簿中的另一个Excel表中更新一个Excel表时收到错误消息。 该错误只出现在源工作簿不是.xls格式

您不能编辑此字段,因为它驻留在链接的Excel电子表格中。 在此Access版本中,已禁用在链接的Excel电子表格中编辑数据的function。

这应该是使用Access时的预期行为 。

  1. 为什么我看到这个错误,因为我没有使用Access,但只有两个Excel文件,并有比2007年更新的版本?
  2. 这个function如何提高安全性 ?
  3. 在我的情况是否有解决方法? 除了在我的目标工作簿中使用临时表。

更新:代码示例

Sub GetFiles() 'Take !M sheet to create files and their informations Dim Base As FichierSource '---------------------------- 'Create files object '---------------------------- 'Fichier Source Base.Path = "C:\Users\Lichar\Documents\SQL TEST\Base.xlsx" Base.SourceSheet = "Data" Base.TargetSheet = "Base" Base.Columns = "*" Base.Filter = "WHERE [Base$].id = [Data$].id" Base.Name = "Base.xlsx" '--------------------------- 'Launch queries '--------------------------- With Base Call UPDATEQUERY(.Path, .SourceSheet, .TargetSheet, .Columns, .Filter) End With End Sub Sub UPDATEQUERY(SourcePath As String, SourceSheet As String, TargetSheet As String, _ Columns As String, Filter As String) Dim Cn As ADODB.Connection Dim QUERY_SQL As String Dim CHAINE_HDR As String Dim STRCONNECTION As String CHAINE_HDR = "[Excel 12.0;Provider=Microsoft.ACE.OLEDB.12.0;Mode=5;Extended Properties='HDR=YES;'] " Set Cn = New ADODB.Connection QUERY_SQL = _ "UPDATE [" & TargetSheet & "$] INNER JOIN (SELECT * FROM [" & SourceSheet & "$] " & _ "IN '" & SourcePath & "' " & CHAINE_HDR & ") t2 " & _ "ON [" & TargetSheet & "$].id = t2.id " & _ "SET [" & TargetSheet & "$].ColA = t2.ColA " STRCONNECTION = _ "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};" & _ "DriverId=790;" & _ "Dbq=" & ThisWorkbook.FullName & ";" & _ "DefaultDir=" & ThisWorkbook.FullName & ";ReadOnly=False;" Cn.Open STRCONNECTION Cn.Execute (QUERY_SQL) '--- Fermeture connexion --- Cn.Close Set Cn = Nothing End Sub 

谢谢

这是三个问题之一,但我会尽力回答所有这些问题:

  1. 据我所知,它不依赖于Access或Excel,而是依赖于Microsoft Access OLEDB提供程序。 您可以尝试使用Microsoft Excel ODBC驱动程序使用ODBC连接
  2. 一个堆栈溢出回答者说,这是由于安全原因是不是一个好的来源。 我怀疑这是出于安全原因。
  3. 有很多。 如果你告诉我们你想要做什么,我可以更具体。