Microsoft Office Access 2007, Microsoft Office Access 2003 veya Microsoft Access 2002'de, bir Microsoft Excel çalışma kitabına bağlantı içeren tablolardaki verileri değiştiremez, ekleyemez veya silemezsiniz.
Ayrıca, aşağıdaki koşullardan biri geçerli olduğunda bu davranışla karşılaşabilirsiniz:
- Excel çalışma kitabına bağlantı içeren tablolardan veri almak üzere bir sorgu oluşturursunuz.
- Excel çalışma kitabına bağlantı içeren tablolardaki verilere erişen bir form oluşturursunuz.
- Excel çalışma kitabına bağlantı içeren tabloları program yardımıyla güncelleştirmek üzere DAO veya ADO kullanırsınız.
Bağlantılı bir Excel çalışma kitabındaki kayıtları güncelleştirmek üzere bir sorgu gerçekleştirdiğinizde aşağıdaki hata iletisini alırsınız:
İşlem, güncelleştirilebilir sorgu kullanmalıdır
Excel çalışma kitabına bağlantı içeren tabloları program yardımıyla güncelleştirmek üzere DAO kullandığınızda aşağıdaki iletiyi alırsınız:
Çalışma Zamanı Hatası '3027' Güncelleştirilemiyor. Veritabanı veya nesne salt okunur.
Bağlantılı verileri ADO ile güncelleştirmeye çalıştığınızda aynı iletiyi alırsınız, ancak hata numarası aşağıdakine benzeyebilir:
Excel çalışma kitabına kayıt eklemek üzere bir sorgu çalıştırdığınızda, Excel çalışma kitabı bir Access veritabanına bağlı olmasa da aşağıdaki hata iletisini alırsınız:
İşlem, güncelleştirilebilir sorgu kullanmalıdır
Bu beklenen davranış aşağıdaki durumlardan herhangi biri doğruysa oluşur:
- Office Access 2007 kullanıyorsunuz.
- Microsoft Office 2003 Service Pack 2 (SP2) veya Office 2003 SP2 sonrasında yayımlanmış bir Access 2003 güncelleştirmesi yüklediniz.
Microsoft Office 2003 Service Pack 2 hakkında daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
887616
(http://support.microsoft.com/kb/887616/
)
Office 2003 Service Pack 2'nin açıklaması (Bu bağlantı, bir kısmı veya tamamı İngilizce olan içeriğe işaret edebilir.)
- 18 Ekim 2005 tarihli Access 2002 güncelleştirmesini (KB904018) yüklediniz.
Access 2002 güncelleştirmesi (KB904018) hakkında daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
904018
(http://support.microsoft.com/kb/904018/
)
Access 2002 güncelleştirmesi: 18 Ekim 2005'in açıklaması (Bu bağlantı, bir kısmı veya tamamı İngilizce olan içeriğe işaret edebilir.)
- Microsoft Office 2003 Service Pack 2 (SP2), Office 2003 SP2 sonrasında yayımlanan herhangi bir Access 2003 güncelleştirmesi veya 18 Ekim 2005 tarihli Access 2002 güncelleştirmesi (KB904018) ya da sonrasını içeren bir Access çalışma zamanı uygulaması yüklediniz.
Office güncelleştirme dosyalarını bir Access çalışma zamanı uygulamasına ekleme hakkında daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
916176
(http://support.microsoft.com/kb/916176/
)
Access 2003 veya Access 2002'de bir uygulama için yükleme paketi oluşturulduğunda sihirbaz Access'in yayımlanan sürümünde bulunan çalışma zamanı dosyalarını kullanıyor (Bu bağlantı, bir kısmı veya tamamı İngilizce olan içeriğe işaret edebilir.)
Bu beklenen davranışa geçici bir çözüm için aşağıdaki yöntemlerden birini kullanın.
Yöntem 1: Microsoft Excel kullanın
Bağlantılı Excel çalışma kitabını Microsoft Excel'de açın ve değişiklikleri çalışma kitabında yapın. Değişiklikleri tamamladığınızda kaydedin ve çalışma kitabını kapatın.
Yöntem 2: Office Access 2007, Access 2003 veya Access 2002 kullanın
Bağlantılı Excel çalışma kitabını Access'e alın ve verilerdeki değişiklikleri yapın. Değişiklikleri tamamladığınızda, verileri bir Excel .xls dosyası olarak verin.
Access'teki tabloyu Excel'e vermek için, aşağıdaki kodu Access'te ç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=<AccessYolu>"
'Not: Office Access 2007'de, aşağıdaki kod satırını kullanın:
'Db.Open "PROVIDER=Microsoft.ACE.OLEDB.12.0;Data Source=<AccessYolu>"
SQL = "<Sorgum>"
CopyRecordSetToXL SQL, Db
Db.Close
MsgBox "Access verileri Excel dosyasına başarıyla verdi.", vbInformation, "Verme İşlemi Başarılı Oldu."
Exit Sub
Leave:
MsgBox Err.Description, vbCritical, "Hata"
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 = "<ExcelYolu>"
'Excel.exe adlı COM Nesnesi ile yeni bir oturum örneği oluştur.
Set xlApp = New Excel.Application
Set xlwbBook = xlApp.Workbooks.Open(stFile)
Set xlwsSheet = xlwbBook.Worksheets("<ÇalışmaSayfaları>")
xlwsSheet.Activate
'Verilerin girileceği ilk hücre alınıyor.
xlwsSheet.Cells.SpecialCells(xlCellTypeLastCell).Select
y = xlApp.ActiveCell.Column - 1
xlApp.ActiveCell.Offset(1, -y).Select
x = xlwsSheet.Application.ActiveCell.Cells.Address
'SQL sorgusuna bağlı olarak kayıt kümesi açılıyor ve veriler Excel çalışma sayfasına kaydediliyor.
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 yertutucuları değiştirin:
- <AccessYolu>
- <ExcelYolu>
- <Sorgum>
<Sorgum>, Access veritabanındaki tablolarda çalıştırdığınız sorgunun yertutucusudur. Sorgunun sonucu Excel çalışma kitabına verilir. - <ÇalışmaSayfaları>
<ÇalışmaSayfaları>, sonucu vermek istediğiniz Excel çalışma kitabının yertutucusudur.
Bu kod örneğini çalıştırmak için, CTRL+G tuşlarına basarak
Immediate (Anında Çalıştır) penceresini açın,
WorkArounds yazın ve ENTER tuşuna basın.
Microsoft, yasal sorunlar nedeniyle 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 tanıyan işlevi 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ğlantılı tablolarda görüntülenir.