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.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,742
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
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.
 
Katılım
18 Nisan 2020
Mesajlar
23
Excel Vers. ve Dili
2016 türkçe
İ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.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,742
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
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
 
Katılım
18 Nisan 2020
Mesajlar
23
Excel Vers. ve Dili
2016 türkçe
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.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,742
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Küçük bir düzeltme yaptım. Son halini deneyiniz.
 
Katılım
18 Nisan 2020
Mesajlar
23
Excel Vers. ve Dili
2016 türkçe
Denedim çalışıyor. Ellerinize sağlık. Çok teşekkür ederim.
 
Üst