在 Office Access 2003 或 Access 2002 中无法更改、添加或删除链接到 Excel 工作簿的表中的数据

针对 Office 2003 的支持已终止

Microsoft 已于 2014 年 4 月 8 日终止了针对 Office 2003 的支持。该更改已影响到您的软件更新和安全选项。 了解这一措施对于您的含义以及如何继续保持受保护状态。

症状
在 Microsoft Office Access 2003 或 Microsoft Access 2002 中,无法更改、添加或删除链接到 Microsoft Excel 工作簿的表中的数据。

此外,当存在以下任一情况时,也可能会遇到这一问题:
  • 生成一个查询,以便从链接到 Excel 工作簿的表中检索数据。
  • 生成一个窗体,该窗体访问链接到 Excel 工作簿的表中的数据。
  • 使用 DAO 或 ADO 以编程方式更新链接到 Excel 工作簿的表。
当执行查询以更新链接的 Excel 工作簿中的记录时,收到以下消息:
Operation must use an updateable query
在使用 DAO 以编程方式更新链接到 Excel 工作簿的表时,收到以下消息:
Runtime Error '3027' Cannot update.Database or object is read-only.
当您尝试在 ADO 中更新链接的数据时,会出现相同的消息,但错误号可能与以下内容类似:
-2147217911 (80040e09)
当您运行一个查询以将记录插入到 Excel 工作簿时,即使该 Excel 工作簿未链接到 Access 数据库,也会收到以下错误消息:
Operation must use an updateable query
原因
如果满足以下条件之一,就会发生这种情况:
  • 已安装了 Microsoft Office 2003 Service Pack 2 (SP2),或在 Office 2003 SP2 之后发布的任何 Access 2003 更新。

    有关 Microsoft Office 2003 Service Pack 2 的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    887616Office 2003 Service Pack 2 的说明
  • 安装了 2005 年 10 月 18 日发布的 Access 2002 更新 (KB904018)。

    有关 Access 2002 更新 (KB904018) 的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    9040182005 年 10 月 18 日版 Access 2002 更新的说明
  • 已安装了包含 Microsoft Office 2003 Service Pack 2 (SP2) 的 Access 运行时应用程序、在 Office 2003 SP2 之后发布的任何 Access 2003 更新,或者安装了 2005 年 10 月 18 日或之后发布的 Access 2002 更新 (KB904018)。
    有关如何在 Access 运行时应用程序中包含 Office 更新文件的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    916176在为 Access 2003 或 Access 2002 中的应用程序创建安装包时,向导使用 Access 发布版中包含的运行时文件
替代方法
要避免此意外现象,请使用以下方法之一。

方法 1:使用 Microsoft Excel

在 Microsoft Excel 中打开链接的 Excel 工作簿,然后更改工作簿。完成更改后,保存更改并关闭工作簿。

方法 2:使用 Access 2003 或 Access 2002

将链接的 Excel 工作簿导入 Access,然后更改数据。完成更改后,将数据作为 Excel .xls 文件导出。

要将 Access 中的表导出到 Excel,请在 Access 中运行以下代码。
Public Sub WorkArounds()On Error GoTo Leave    Dim strSQL, SQL As String    Dim Db As ADODB.Connection    Set Db = New ADODB.Connection    Db.CursorLocation = adUseClient    Db.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=<AccessPath>"    SQL = "<MyQuery>"    CopyRecordSetToXL SQL, Db    Db.Close    MsgBox "Access has successfully exported the data to excel file.", vbInformation, "Export Successful."    Exit SubLeave:        MsgBox Err.Description, vbCritical, "Error"        Exit SubEnd SubPrivate Sub CopyRecordSetToXL(SQL As String, con As ADODB.Connection)    Dim rs As New ADODB.Recordset    Dim x    Dim i As Integer, y As Integer    Dim xlApp As Excel.Application    Dim xlwbBook As Excel.Workbook, xlwbAddin As Excel.Workbook    Dim xlwsSheet As Excel.Worksheet    Dim rnData As Excel.Range    Dim stFile As String, stAddin As String    Dim rng As Range    stFile = "<ExcelPath>"    'Instantiate a new session with the COM-Object Excel.exe.    Set xlApp = New Excel.Application    Set xlwbBook = xlApp.Workbooks.Open(stFile)    Set xlwsSheet = xlwbBook.Worksheets("<WorkSheets>")    xlwsSheet.Activate    'Getting the first cell to input the data.    xlwsSheet.Cells.SpecialCells(xlCellTypeLastCell).Select    y = xlApp.ActiveCell.Column - 1    xlApp.ActiveCell.Offset(1, -y).Select    x = xlwsSheet.Application.ActiveCell.Cells.Address    'Opening the recordset based on the SQL query and saving the data in the Excel worksheet.    rs.CursorLocation = adUseClient    If rs.State = adStateOpen Then        rs.Close    End If    rs.Open SQL, con    If rs.RecordCount > 0 Then        rs.MoveFirst        x = Replace(x, "$", "")        y = Mid(x, 2)        Set rng = xlwsSheet.Range(x)        xlwsSheet.Range(x).CopyFromRecordset rs    End If    xlwbBook.Close True    xlApp.Quit    Set xlwsSheet = Nothing    Set xlwbBook = Nothing    Set xlApp = NothingEnd Sub
注意:在此代码示例中,请替换下列占位符:
  • <AccessPath>
  • <ExcelPath>
  • <MyQuery>
    <MyQuery> 是对 Access 数据库中的表运行的查询的占位符。该查询的结果将导出到 Excel 工作簿。
  • <WorkSheets>
    <WorkSheets> 是要将结果导出到的 Excel 中的工作表的占位符。
要运行此代码示例,请按 Ctrl+G 打开“即时”窗口,键入 WorkArounds,然后按 Enter。
更多信息
由于法律问题,Microsoft 已禁用 Access 2003 和 Access 2002 中用于更改链接表(指向 Excel 工作簿中的某一区域)中数据的功能。不过,当您直接在 Excel 工作簿中进行更改时,所做的更改会出现在 Access 中的链接表中。
edit access2003 access2k3 acc2003 acc2k3 access2002 access2k2 accessxp acc2002 acc2k2 accxp excel2003 excel2k3 xl2003 xl2k3 excel2002 excel2k2 excelxp xl2002 xl2k2 xlxp excel2000 excel2k xl2000 xl2k
属性

文章 ID:904953 - 上次审阅时间:09/20/2006 12:30:57 - 修订版本: 5.3

Microsoft Office Access 2003, Microsoft Access 2002 标准版, Microsoft Office Excel 2003, Microsoft Excel 2002 标准版, Microsoft Excel 2000 标准版, Microsoft Access 2002 Runtime, Microsoft Office Access 2003 Runtime

  • kbexpertiseadvanced kbdatabase kbtshoot kbprb KB904953
反馈