Özellik ikonu

UpdateFromFile

İndirme izni yok

Genel Bakış

UpdateFromFile (Workbook.UpdateFromFile yöntemi), açık duran bir çalışma kitabını diskteki en son kaydedilmiş kopyasından günceller. Özellikle salt okunur açılan ve başkaları tarafından değiştirilebilen paylaşımlı raporlarda, kitabı kapatıp yeniden açmadan güncel içeriği almak için kullanılır. Yöntemin parametresi yoktur ve değer döndürmez.

Söz dizimi​

UpdateFromFile bir Workbook nesnesinin yöntemidir:
VBA 5 satır
ifade.UpdateFromFile

' Örnek
ThisWorkbook.UpdateFromFile
Workbooks("Satis.xlsx").UpdateFromFile
  • ifade: Bir Workbook nesnesini veren ifade (ThisWorkbook, ActiveWorkbook, Workbooks("Ad") ya da bir nesne değişkeni). Zorunludur.
  • Parametre: Yöntemin parametresi yoktur.
  • Dönüş değeri: Yoktur. Başarı ya da başarısızlık, çalışma zamanı hatasıyla anlaşılır.

Nasıl çalışır ve ne zaman kullanılır​

Yöntem, açık kitabın içeriğini diskteki son kayıtlı kopyayla değiştirir. Bu nedenle kitapta kaydedilmemiş değişiklik bulunmaması beklenir; kaydedilmemiş değişiklik varsa güncelleme yapılmayabilir ya da hata oluşabilir. Bu yüzden çağırmadan önce kitabın durumunu denetlemek iyi bir alışkanlıktır.

Yöntemi çağırmadan önce şu iki özelliğe bakın:
  • ReadOnly: Kitap salt okunur açıldıysa True döner. Güncel veriyi izleyen rapor kitaplarında asıl kullanım alanı budur.
  • Saved: Kitapta son kayıttan beri değişiklik yoksa True döner. False ise kullanıcının kaybolabilecek değişiklikleri vardır.
Kitap hiç kaydedilmemişse diskte güncellenecek bir kopya da yoktur; bu durumda yöntemin hata vermesi normaldir.

Hata yönetimi ve sınırlar​

Dosya başka bir kullanıcı ya da süreç tarafından kilitlenmişse, ağ bağlantısı kopmuşsa veya dosya taşınmış ya da silinmişse çağrı hata verir. Üretim kodunda çağrıyı On Error ile sarın, Err.Number ve Err.Description değerlerini kontrol edin. Yöntem yalnızca çağrıldığı kitabı etkiler; kitabın dış bağlantılarını ya da veri sorgularını yenilemez. Bunlar için UpdateLink ve RefreshAll ayrıca kullanılır.

1. Koşullu güncelleme ve durum denetimi​

Bir standart modül ekleyin (Alt+F11, sonra Ekle > Modül (Insert > Module)) ve kodu yapıştırın. Makro kitabın salt okunur ve kayıtlı olup olmadığını önce değişkenlere alır, sonra B2 ile B3 hücrelerine yazar. Yalnızca iki koşul birlikte sağlanırsa UpdateFromFile çağırır, sonucu B4 hücresine yazar.
VBA 32 satır
Option Explicit

Sub DurumKontrol()
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim saltOkunur As Boolean
    Dim kayitli As Boolean

    Set wb = ThisWorkbook
    Set ws = wb.Worksheets("Durum Kontrol")

    ' Durumu hücreye yazmadan önce alın: hücreye yazmak kitabı değiştirir ve Saved değerini False yapar
    saltOkunur = wb.ReadOnly
    kayitli = wb.Saved

    ' Mevcut durumu sayfaya yaz
    ws.Range("B2").Value = saltOkunur
    ws.Range("B3").Value = kayitli
    ws.Range("B4").Value = "Çağrılmadı"

    ' Yalnız salt okunur ve kaydedilmemiş değişiklik yoksa güncelle
    If saltOkunur And kayitli Then
        On Error Resume Next
        wb.UpdateFromFile
        If Err.Number = 0 Then
            ws.Range("B4").Value = "Çağrıldı"
        Else
            ws.Range("B4").Value = "Hata: " & Err.Description
        End If
        On Error GoTo 0
    End If
End Sub
UpdateFromFile
Formülünü incelemek için bir hücre seçin.
AB
1DenetimSonuç
2Salt okunur muYANLIŞ
3Kayıtlı mı (değişiklik yok)YANLIŞ
4UpdateFromFile durumuÇağrılmadı
Durum KontrolExcelDepo v1.0.0
B2 hücresinde ReadOnly değeri (YANLIŞ), B3 hücresinde Saved değeri (YANLIŞ) görünür. B4 hücresindeki (Çağrılmadı) metin, UpdateFromFile çağrısının yapılıp yapılmadığını gösterir. Kitap salt okunur değilse çağrı hiç yapılmaz; bu, gereksiz hata almanızı önler.

2. Güncelleme kararını bir işleve taşımak​

Aşağıdaki kodu standart modüle yapıştırın. Tabloda dört olası senaryo vardır. GuncellemeKarari işlevi, her satır için UpdateFromFile çağrılıp çağrılamayacağına karar verir ve sonucu D sütununa yazar. Gerçek bir uygulamada Uygun durumda wb.UpdateFromFile satırını bu işlevin çağrıldığı yere eklersiniz.
VBA 23 satır
Option Explicit

' Salt okunur ve kaydedilmiş durumuna göre karar metni üretir
Function GuncellemeKarari(ByVal saltOkunur As Boolean, ByVal kaydedildi As Boolean) As String
    If Not saltOkunur Then
        GuncellemeKarari = "Gerekmez: kitap salt okunur değil"
    ElseIf Not kaydedildi Then
        GuncellemeKarari = "Bekleyin: kaydedilmemiş değişiklik var"
    Else
        GuncellemeKarari = "UpdateFromFile çağrılabilir"
    End If
End Function

Sub KararlariYaz()
    Dim ws As Worksheet
    Dim r As Long

    Set ws = ThisWorkbook.Worksheets("Karar Tablosu")

    For r = 2 To 5
        ws.Cells(r, 4).Value = GuncellemeKarari(CBool(ws.Cells(r, 2).Value), CBool(ws.Cells(r, 3).Value))
    Next r
End Sub
UpdateFromFile
Formülünü incelemek için bir hücre seçin.
ABCD
1SenaryoSalt OkunurKayıtlıKarar
2Paylaşılan rapor, değişiklik yokDOĞRUDOĞRUUpdateFromFile çağrılabilir
3Paylaşılan rapor, değişiklik varDOĞRUYANLIŞBekleyin: kaydedilmemiş değişiklik var
4Yerel dosya, değişiklik yokYANLIŞDOĞRUGerekmez: kitap salt okunur değil
5Yerel dosya, değişiklik varYANLIŞYANLIŞGerekmez: kitap salt okunur değil
Karar TablosuExcelDepo v1.0.0
Yalnızca ilk satırda hem ReadOnly hem Saved değeri TRUE olduğundan karar D2 hücresinde (UpdateFromFile çağrılabilir) çıkar. İkinci satırda (Bekleyin: kaydedilmemiş değişiklik var) kaydedilmemiş değişiklik bulunduğu için beklenir. Son iki satırda (Gerekmez: kitap salt okunur değil ve Gerekmez: kitap salt okunur değil) kitap salt okunur olmadığından güncellemeye gerek kalmaz.

3. Salt okunur rapor kitabını açıp yenilemek​

Bu örnek dosya açtığı için Excel'de otomatik çalıştırılmaz; kodu standart modüle yapıştırıp kendi dosya yolunuzla deneyin. Makro, ağda paylaşılan satış raporunu salt okunur açar. Daha sonra aynı makro tekrar çalıştırıldığında açık kitap zaten bulunduğu için doğrudan UpdateFromFile ile güncel veriyi alır. Yanındaki tablo, raporun yapısını örnekler.
VBA 24 satır
Option Explicit

Sub RaporuGuncelle()
    Dim wb As Workbook

    On Error Resume Next
    Set wb = Workbooks("Satis.xlsx")
    On Error GoTo 0

    If wb Is Nothing Then
        ' Kitap açık değilse salt okunur aç
        Set wb = Workbooks.Open(Filename:="C:\Raporlar\Satis.xlsx", ReadOnly:=True)
    ElseIf wb.Saved Then
        ' Kitap açık ve değişiklik yoksa diskteki son sürümü al
        On Error Resume Next
        wb.UpdateFromFile
        If Err.Number <> 0 Then
            MsgBox "Güncelleme yapılamadı: " & Err.Description
        End If
        On Error GoTo 0
    Else
        MsgBox "Kitapta kaydedilmemiş değişiklik var, güncelleme yapılmadı."
    End If
End Sub
UpdateFromFile
Formülünü incelemek için bir hücre seçin.
ABC
1RaporBölgeSatış
2Ocak Satış ÖzetiMarmara125.000,00
3Ocak Satış ÖzetiEge84.500,00
4Ocak Satış Özetiİç Anadolu97.250,00
5Ocak Satış ÖzetiAkdeniz61.800,00
Rapor ListesiExcelDepo v1.0.0
Makro ilk çalıştırmada dosyayı salt okunur açar. Sonraki çalıştırmalarda kitap açıksa ve Saved değeri True ise UpdateFromFile ile diskteki en son kayıtlı sürüm alınır. Kaydedilmemiş değişiklik varsa kullanıcıya iletiyle bilgi verilir ve kitaba dokunulmaz. Bu örnek dosya açma ve MsgBox içerdiği için sayfada çalıştırılmamıştır.

Kullanırken dikkat edin​

  • Önce durumu denetleyin: Çağırmadan önce ReadOnly ve Saved özelliklerini kontrol edin. Kaydedilmemiş değişikliği olan bir kitapta yöntem hata verebilir ya da çalışmanın bir kısmı kaybolabilir.
  • Hiç kaydedilmemiş kitap: Diskte kopyası bulunmayan, yeni oluşturulmuş bir kitapta güncellenecek bir dosya yoktur. Bu durumda çağrı hata verir; hatayı On Error ile yakalayın.
  • Dış bağlantılar yenilenmez: UpdateFromFile kitabın kendisini diskten yeniler; kitaptaki dış bağlantıları, sorguları ve pivot tabloları ayrıca yenilemez. Bunlar için UpdateLink ya da RefreshAll kullanın.
  • Hata ve kilit durumları: Dosya ağda başka bir süreç tarafından kilitliyse, taşınmışsa ya da silinmişse çağrı çalışma zamanı hatasıyla sonlanır. Kullanıcıya anlaşılır bir ileti göstermek için Err.Description değerini kullanın.
  • Parametre yok, dönüş değeri yok: Yöntemin sonucunu bir değişkene atamaya çalışmayın. Güncellemenin başarılı olup olmadığını hata oluşup oluşmadığına bakarak anlarsınız.
  • İlgili konular: Workbook.ReadOnly özelliği, Workbook.Saved özelliği, Workbooks.Open yöntemi ve ReadOnly bağımsız değişkeni, Workbook.Close yöntemi, Workbook.UpdateLink yöntemi, Workbook.RefreshAll yöntemi, Application.DisplayAlerts özelliği, On Error deyimi.
Örneklerdeki makroların tamamı indirilebilir Excel dosyasındadır (.xlsm). Dosyayı açtıktan sonra makroları etkinleştirin, ardından Alt + F11 ile Visual Basic Düzenleyicisi'nde kodları inceleyebilir ve Alt + F8 ile çalıştırabilirsiniz.
Yazar
ExcelDepo
İndirme sayısı
0
Gösterim
8
İlk yayın
Güncel

Puanlar

0.00 Oylama 0 İnceleme
Geri
Üst