Excel dosyanızdaki veriyi belirli aralıklarla Access veritabanına aktarmak için birkaç farklı yöntem kullanabilirsiniz. Bu işlemi programatik olarak yapmanın en yaygın yolu, VBA (Visual Basic for Applications) ya da bir dış komut dosyası (örneğin Python) ile otomatik bir çözüm oluşturmaktır. Eğer Access'te doğrudan dış veri bağlantısı yavaşlama ve performans sorunlarına sebep oluyorsa, veriyi periyodik olarak elle ya da otomatik bir şekilde içeri aktarmak mantıklı bir yaklaşım olacaktır.

1. VBA ile Excel'den Access'e Veri Aktarımı


Excel'de bir VBA kodu yazarak, belirli aralıklarla Access'e veri aktarıp güncelleyebilirsiniz. Bu yöntemle Excel'deki veriyi bir Access tablosuna yazabilirsiniz.
Aşağıdaki adımları izleyerek bir VBA kodu oluşturabilirsiniz:

Adım 1: Access Veritabanına Bağlanmak


Excel'de VBA editörünü açarak (Alt + F11), aşağıdaki kodu bir modüle ekleyin. Bu kod, Excel'deki verileri Access'e kopyalar:


Sub ExceldenAccessVeriAktar()
    ' Değişkenler
    Dim db As Object
    Dim rs As Object
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long

    ' Access veritabanı yolunu belirtin
    Set db = CreateObject("DAO.DBEngine.36").OpenDatabase("C:\Yol\Veritabanı.accdb")

    ' Excel'deki çalışma sayfası
    Set ws = ThisWorkbook.Sheets("Sayfa1")
    
    ' Access tablosunu açın
    Set rs = db.OpenRecordset("TabloAdı", dbOpenTable)

    ' Son satırı bul
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    ' Access tablosuna veri ekleme
    For i = 2 To lastRow ' Başlık satırı yoksa 1 yerine 2 ile başlayın
        rs.AddNew
        rs.Fields("Sütun1") = ws.Cells(i, 1).Value
        rs.Fields("Sütun2") = ws.Cells(i, 2).Value
        ' Diğer sütunları ekleyin
        rs.Update
    Next i

    ' Bağlantıyı kapat
    rs.Close
    db.Close
    Set db = Nothing
    Set rs = Nothing
End Sub


Adım 2: Kodun Otomatik Çalışması İçin Zamanlayıcı Kurmak


Bu işlemi belirli aralıklarla çalıştırmak için aşağıdaki VBA zamanlayıcıyı ekleyebilirsiniz:

 
Public NextRun As Date

Sub ZamanlayiciBaslat()
    NextRun = Now + TimeValue("00:01:00") ' Her 1 dakikada bir çalışacak
    Application.OnTime NextRun, "ExceldenAccessVeriAktar"
End Sub

Sub ZamanlayiciDurdur()
    On Error Resume Next
    Application.OnTime NextRun, "ExceldenAccessVeriAktar", , False
End Sub


Adım 3: Makroyu Çalıştırma

  • ZamanlayiciBaslat makrosunu çalıştırarak belirli aralıklarla veri aktarımını başlatabilirsiniz.
  • ZamanlayiciDurdur makrosunu kullanarak bu işlemi durdurabilirsiniz.

2. Python Kullanarak Otomatik Veri Aktarımı


Alternatif olarak, Python ile pyodbc ya da pandas kütüphanesini kullanarak Excel dosyasını Access'e aktarma işlemini programlayabilirsiniz.

3. Access İçin Makro Kullanımı


Access içinde bir makro oluşturarak belirli aralıklarla dış veri aktarma işlemi gerçekleştirebilirsiniz. Ancak performans sorunlarına neden olduğu için bu yöntemden uzak durmanızı tavsiye ederim.