Access'te excel çalışma kitabına bağlı tablolardaki verileri değiştiremez, ekleyemez veya silemezsiniz
Özgün KB numarası: 904953
Belirtiler
Microsoft Office Access 2007 veya Microsoft Office Access 2003 veya Microsoft Access 2002'de, Bir Microsoft Excel çalışma kitabına bağlı tablolardaki verileri değiştiremez, ekleyemez veya silemezsiniz.
Ayrıca, aşağıdaki koşullardan herhangi biri doğru olduğunda bu davranışla karşılaşabilirsiniz:
- Excel çalışma kitabına bağlı tablolardan veri almak için bir sorgu oluşturursunuz.
- Excel çalışma kitabına bağlı tablolardan verilere erişen bir form oluşturursunuz.
- Excel çalışma kitabına bağlı tabloları program aracılığıyla güncelleştirmek için DAO veya ADO kullanırsınız.
Bağlantılı bir Excel çalışma kitabındaki kayıtları güncelleştirmek için bir sorgu gerçekleştirdiğinizde aşağıdaki iletiyi alırsınız:
İşlem güncelleştirilebilir bir sorgu kullanmalıdır
Bir Excel çalışma kitabına bağlı tabloları program aracılığıyla güncelleştirmek için DAO kullandığınızda aşağıdaki iletiyi alırsınız:
Çalışma Zamanı Hatası '3027' Güncelleştirilemiyor. Veritabanı veya nesne salt okunurdur.
ADO'da bağlı verileri güncelleştirmeyi denediğinizde ileti aynıdır, ancak hata numarası aşağıdakine benzer olabilir:
-2147217911 (80040e09)
Excel çalışma kitabına kayıt eklemek için bir sorgu çalıştırdığınızda, Excel çalışma kitabı access veritabanına bağlı olmasa bile aşağıdaki hata iletisini alırsınız:
İşlem güncelleştirilebilir bir sorgu kullanmalıdır
Neden
Bu beklenen davranış, aşağıdaki koşullardan biri doğru olduğunda oluşur:
- Office Access 2007 kullanıyorsunuz.
- Microsoft Office 2003 Service Pack 2 (SP2) veya sonraki bir hizmet paketini ya da Office 2003 SP2'nin ardından yayımlanan access 2003 güncelleştirmelerini yüklediniz.
- 18 Ekim 2005 tarihli Access 2002 (KB904018) güncelleştirmesini yüklediniz.
- Microsoft Office 2003 Service Pack 2 (SP2) veya sonraki bir hizmet paketini, Office 2003 SP2 sonrasında yayımlanan Access 2003 güncelleştirmelerini veya 18 Ekim 2005 veya sonraki bir tarihli Access 2002 (KB904018) güncelleştirmesini içeren bir Access çalışma zamanı uygulaması yüklediniz.
Geçici Çözüm
Beklenen bu davranışı geçici olarak çözmek için aşağıdaki yöntemlerden birini kullanın.
Yöntem 1: Microsoft Excel'i kullanma
Bağlı Excel çalışma kitabını Microsoft Excel'de açın ve çalışma kitabında değişikliklerinizi yapın. Değişiklikleri tamamladığınızda, değişiklikleri kaydedin ve çalışma kitabını kapatın.
Yöntem 2: Office Access 2007, Access 2003 veya Access 2002 kullanma
Bağlantılı Excel çalışma kitabını Access'e aktarın ve sonra verilerde değişikliklerinizi yapın. Değişiklikleri tamamladığınızda, verileri Excel .xls dosyası olarak dışarı aktarın.
Tabloyu Access'ten Excel'e aktarmak için Access'te aşağıdaki kodu çalıştırın.
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
Not
Bu kod örneğinde aşağıdaki yer tutucuları değiştirin:
<AccessPath>
<ExcelPath>
<MyQuery>
<MyQuery> , Access veritabanındaki tablolarda çalıştırdığınız sorgu için yer tutucudur. Sorgunun sonucu Excel çalışma kitabına aktarılır.
<Çalışma>
<Çalışma Sayfaları> , Excel'de sonucu dışarı aktarmak istediğiniz çalışma sayfası için bir yer tutucudur. Bu kod örneğini çalıştırmak için CTRL+G tuşlarına basarak Anında penceresini açın, WorkArounds yazın ve ENTER tuşuna basın.
Ek Bilgi
Yasal sorunlar nedeniyle Microsoft, Access 2003 ve Access 2002'de kullanıcıların Excel çalışma kitabındaki bir aralığa işaret eden bağlantılı tablolardaki verileri değiştirmesine olanak sağlayan işlevselliği devre dışı bırakmıştır. Ancak, doğrudan Excel çalışma kitabında değişiklik yaptığınızda, değişiklikler Access'teki bağlı tabloda görünür.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin