• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

ADO ile Kapalı Dosyayı Güncelleme

Katılım
18 Nisan 2020
Mesajlar
23
Excel Vers. ve Dili
2016 türkçe
Merhabalar,
Yeni yapmaya başlayacağım bir işlemde A adında bir klasörümde 100 lerce excel dosyası olacak, ve bu dosyalar B adındaki klasörlerdeki excel dosyalarından bilgi alıyor, B klasöründeki dosyalar sürekli işlem görüyor. A klasöründeki dosyaları açıp kapattığımda güncelleştirme gerçekleşiyor. Ancak bu durum tek tek bütün dosyaları açıp kapatma şeklinde olunca can sıkıcı bir zaman alacak. İsteğim şu ; A klasöründeki bütün excel dosyaları açıp kapatmaya gerek olmadan istediğim anda güncel bilgilerle kaydedilmiş olsun. ADO ile yapılabileceğini biliyorum ancak nasıl yapılır bir fikrim yok. Yardımlarınız için şimdiden teşekkürler.
 
Merhabalar,

Öncelikle konuyu açtığınız bölümde çözümlenmiş konular paylaşılmaktadır. Siz çözüm aradığınız için forumun uygun bölümüne taşıdım. Dikkat ederseniz sevinirim.

ADO ile kapalı dosyadaki veriler güncellenebilir. Fakat siz bağlantı ile verilerinizi dosyalar arası aktardığınız için kurduğunuz bağlantılar ADO yönteminde silinecektir.

Bunun yerine A klasöründeki tüm dosyaları döngüye alıp kod ile açıp güncellenmesi sağlanabilir. Son olarak güncel dosya kaydedilip kapatılır. Bu şekilde işlem daha hızlı şekilde yapılabilir.

Kurgu şu şekilde olabilir;
  • Kod için yol tanımı yapılarak ilgili klasör içindeki dosyalar güncellenir.
  • Kod çalıştığında sizden klasör seçmenizi ister. Sizin yapacağınız seçime göre tüm dosyalar güncellenir.

Nasıl olursa işiniz kolaylaşır.
 
İlginiz için teşekkürler. Konuyu yanlış yerde açtığım için kusuruma bakmayın. Bundan sonra daha fazla dikkat edeceğim.

Çözüm için sanki ikinci yol daha verimli olur gibi duruyor. benim düşündüğüm şu şekildeydi; A klasörüne bir tane excel dosyası ekleyip, o dosyada kodu çalıştırdığımda bütün klasör güncellenebilir gibi gelmişti. sizin önerdiğiniz yol. bundan sonra başka bu tür işler yaparsam da işime yarar.
 
Deneyin bakalım sizde sorun çıkacak mı?

C++:
Option Explicit

Sub Klasordeki_Dosyalari_Guncelle()
    Dim Klasor As Object, Kaynak_Klasor As String, Excel_Dosyasi As String, Dosya As Workbook
 
    Set Klasor = CreateObject("Shell.Application").BrowseForFolder(0, "Kaynak dosyaları içeren klasörü seçiniz...", 50, &H0)
 
    If Klasor Is Nothing Then
        MsgBox "İşleme devam edbilmek için klasör seçimi yapmalısınız!" & Chr(10) & _
        "İşleminiz iptal edilmiştir.", vbCritical
        Exit Sub
    ElseIf Klasor = "Masaüstü" Or Klasor = "Desktop" Then
        Kaynak_Klasor = Environ("UserProfile") & "\Desktop\"
    ElseIf Not Klasor Is Nothing Then
        Kaynak_Klasor = Klasor.Items.Item.Path
    End If
 
    On Error Resume Next
 
    Excel_Dosyasi = Dir(Kaynak_Klasor & "\*.xls*")
 
    Application.ScreenUpdating = False
 
    Do
        If Excel_Dosyasi <> "" And Excel_Dosyasi <> ThisWorkbook.Name Then
            DoEvents
            Application.DisplayAlerts = False
            Set Dosya = Workbooks.Open(Kaynak_Klasor & "\" & Excel_Dosyasi, True)
            Application.DisplayAlerts = True
            Dosya.Close True
            Excel_Dosyasi = Dir
        Else
            Excel_Dosyasi = Dir
        End If
    Loop While Excel_Dosyasi <> ""
 
    Set Dosya = Nothing
    Set Klasor = Nothing
 
    Application.ScreenUpdating = True

    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 
Müthişsiniz. Çok başarılı bir şekilde çalışıyor. Tam da istediğim şekilde.Ne kadar teşekkür etsem az. Anladığım kadarıyla klasör içindeki dosyaların uzantıları .xls, .xlsm veya başka bir uzantı olsa bile çalışıyor kod.
 
Küçük bir düzeltme yaptım. Son halini deneyiniz.
 
Denedim çalışıyor. Ellerinize sağlık. Çok teşekkür ederim.
 
Geri
Üst