• 15-09-2024, 21:17:12
    #1
    Arkadaşlar merhaba;

    Bir excel sayfam var ve sürekli formül çalıştırıp başka dosyalardan veri çekiyor. Ben bu sayfayı belirli saniyeler arasında access tablosuna aktarmak/güncellemek istiyorum.

    Yardımcı olabilecek olan arkadaşlara şimdiden teşekkür ederim.

    Not: Dış veri bağlama ile yaptığımda access veritabanımı kullanan program kasıyor veya çalışmıyor. Bu sebepten dolayı veriyi aktarmam gerekiyor.
  • 15-09-2024, 21:26:30
    #2
    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.
  • 15-09-2024, 21:35:21
    #3
    shms adlı üyeden alıntı: mesajı görüntüle
    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.
    konu ile ilgili size pm gönderdim. İlgilenebilirseniz çok memnun olurum.

    Cevabınız için de ayrıca çok teşekkür ederim.