Sie können keine Daten in Tabellen ändern, hinzufügen oder löschen, die mit einer Excel-Arbeitsmappe in Access verknüpft sind.
Ursprüngliche KB-Nummer: 904953
Symptome
In Microsoft Office Access 2007 oder Microsoft Office Access 2003 oder Microsoft Access 2002 können Sie keine Daten in Tabellen ändern, hinzufügen oder löschen, die mit einer Microsoft Excel-Arbeitsmappe verknüpft sind.
Darüber hinaus kann dieses Verhalten auftreten, wenn eine der folgenden Bedingungen zutrifft:
- Sie erstellen eine Abfrage, um Daten aus Tabellen abzurufen, die mit einer Excel-Arbeitsmappe verknüpft sind.
- Sie erstellen ein Formular, das auf Daten aus Tabellen zugreift, die mit einer Excel-Arbeitsmappe verknüpft sind.
- Sie verwenden DAO oder ADO, um Tabellen programmgesteuert zu aktualisieren, die mit einer Excel-Arbeitsmappe verknüpft sind.
Sie erhalten die folgende Meldung, wenn Sie eine Abfrage zum Aktualisieren von Datensätzen in einer verknüpften Excel-Arbeitsmappe ausführen:
Der Vorgang muss eine aktualisierbare Abfrage verwenden.
Sie erhalten die folgende Meldung, wenn Sie DAO verwenden, um Tabellen, die mit einer Excel-Arbeitsmappe verknüpft sind, programmgesteuert zu aktualisieren:
Laufzeitfehler "3027" kann nicht aktualisiert werden. Datenbank oder Objekt ist schreibgeschützt.
Wenn Sie versuchen, die verknüpften Daten in ADO zu aktualisieren, ist die Meldung identisch, aber die Fehlernummer kann der folgenden ähneln:
-2147217911 (80040e09)
Wenn Sie eine Abfrage ausführen, um Datensätze in eine Excel-Arbeitsmappe einzufügen, erhalten Sie die folgende Fehlermeldung, auch wenn die Excel-Arbeitsmappe nicht mit einer Access-Datenbank verknüpft ist:
Der Vorgang muss eine aktualisierbare Abfrage verwenden.
Ursache
Dieses erwartete Verhalten tritt auf, wenn eine der folgenden Bedingungen zutrifft:
- Sie verwenden Office Access 2007.
- Sie haben Microsoft Office 2003 Service Pack 2 (SP2) oder ein höheres Service Pack oder access 2003-Updates installiert, die nach Office 2003 SP2 veröffentlicht wurden.
- Sie haben das Update für Access 2002 (KB904018) vom 18. Oktober 2005 installiert.
- Sie haben eine Access-Laufzeitanwendung installiert, die Microsoft Office 2003 Service Pack 2 (SP2) oder ein höheres Service Pack, alle Access 2003-Updates, die nach Office 2003 SP2 veröffentlicht wurden, oder das Update für Access 2002 (KB904018) vom 18. Oktober 2005 oder höher enthält.
Problemumgehung
Verwenden Sie eine der folgenden Methoden, um dieses erwartete Verhalten zu umgehen.
Methode 1: Verwenden von Microsoft Excel
Öffnen Sie die verknüpfte Excel-Arbeitsmappe in Microsoft Excel, und nehmen Sie dann Ihre Änderungen an der Arbeitsmappe vor. Wenn Sie die Änderungen abgeschlossen haben, speichern Sie die Änderungen, und schließen Sie dann die Arbeitsmappe.
Methode 2: Verwenden von Office Access 2007, Access 2003 oder Access 2002
Importieren Sie die verknüpfte Excel-Arbeitsmappe in Access, und nehmen Sie dann Ihre Änderungen an den Daten vor. Wenn Sie die Änderungen abgeschlossen haben, exportieren Sie die Daten als Excel-.xls-Datei.
Führen Sie den folgenden Code in Access aus, um die Tabelle aus Access nach Excel zu exportieren.
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>"
'Note: In Office Access 2007, use the following line of code:
'Db.Open "PROVIDER=Microsoft.ACE.OLEDB.12.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 Sub
Leave:
MsgBox Err.Description, vbCritical, "Error"
Exit Sub
End Sub
Private 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 = Nothing
End Sub
Hinweis
Ersetzen Sie in diesem Codebeispiel die folgenden Platzhalter:
<AccessPath>
<ExcelPath>
<MyQuery>
<MyQuery> ist der Platzhalter für die Abfrage, die Sie für die Tabellen in der Access-Datenbank ausführen. Das Ergebnis der Abfrage wird in die Excel-Arbeitsmappe exportiert.
<Arbeitsblätter>
<WorkSheets> ist ein Platzhalter für das Arbeitsblatt in Excel, in das Sie das Ergebnis exportieren möchten. Um dieses Codebeispiel auszuführen, drücken Sie STRG+G, um das Direktfenster zu öffnen, geben Sie WorkArounds ein, und drücken Sie dann die EINGABETASTE.
Weitere Informationen
Aufgrund rechtlicher Probleme hat Microsoft die Funktionalität in Access 2003 und in Access 2002 deaktiviert, mit der Benutzer die Daten in verknüpften Tabellen ändern können, die auf einen Bereich in einer Excel-Arbeitsmappe verweisen. Wenn Sie änderungen jedoch direkt in der Excel-Arbeitsmappe vornehmen, werden die Änderungen in der verknüpften Tabelle in Access angezeigt.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Tickets als Feedbackmechanismus für Inhalte auslaufen lassen und es durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unter:Feedback senden und anzeigen für