在Access中链接Excel表格会导致只读错误

我有几个映射和链接到Access 2010数据库的Excel 2010文件。 我需要添加另一个文件,以便三个映射而不是两个。 我链接从外部数据库下的导入和链接选项卡的Excel文件。 这似乎是好的。 但是,当我运行的代码重新映射的Excel文件,它给了我一个运行时错误3027: Database or Object is read only. 没有任何文件或数据库是只读的。

这是重新映射文​​件从新位置(例如从X驱动器到邮件W驱动器)的代码,这也将添加新的Excel文件。 应该添加一些东西,让我添加新的文件?

 Private Sub cmdAcceptPath_Click() Dim db As DAO.Database Dim rs As DAO.Recordset Dim strSQL As String Dim strPath As String Dim strFileName As String Dim strSourceDB As String Dim strTableName As String Dim sList As String Dim gMsgBoxTitle As String On Error GoTo Error_Handler: DoCmd.SetWarnings False strSourceDB = Me.tExcelPath.Value Set db = CurrentDb strSQL = "update tblBackendFiles set setting=" & setData(strSourceDB) & " where code='SourceExcel'" DoCmd.RunSQL strSQL '-- Verify linked tables by refreshing strSQL = "select setting, ExcelPath, ExcelRange from tblBackendFiles where code='SourceExcelWB'" Set rs = db.OpenRecordset(strSQL, dbOpenDynaset) 'Open remapprogress DoCmd.OpenForm "frmReMapProgress" sList = "" rs.MoveFirst While Not rs.EOF strTableName = rs!Setting sList = sList & vbNewLine & "Deleting Table: " & strTableName Forms!frmReMapProgress.tbProgress = sList If TableExists(strTableName) Then DoCmd.DeleteObject acTable, strTableName End If rs.MoveNext Wend sList = "" '-- Relink inventory database rs.MoveFirst While Not rs.EOF sList = sList & vbNewLine & "Linking Table: " & strTableName Forms!frmReMapProgress.tbProgress = sList Forms!frmReMapProgress.Refresh strTableName = rs!Setting strPath = strSourceDB & "\" & rs!ExcelPath Debug.Print strPath DoCmd.TransferSpreadsheet acLink, acSpreadsheetTypeExcel9, strTableName, strPath, True, rs!ExcelRange rs.MoveNext Wend rs.Close MsgBox "Re-Mapping Excel Links is Complete!" GoTo exit_sub: 'If error occurs Error_Handler: MsgBox Err.number & ": " & Err.Description, vbInformation + vbOKOnly, gMsgBoxTitle exit_sub: Set db = Nothing Set rs = Nothing DoCmd.SetWarnings True DoCmd.Close acForm, "frmReMapProgress" DoCmd.Close acForm, "frmReMapExcel" End Sub 

您不需要删除并重新创buildExcel文件的链接。 只需closures链接表(如果打开),并用新副本replaceExcel文件。

当你打开链接表时,它将从新文件读取。