M

Çözüldü Excel Sayfanın Son Kaydedilme Güncellenme Tarihi

  • Konuyu başlatan Konuyu başlatan merakli
  • Başlangıç tarihi Başlangıç tarihi

merakli

Site Üyesi
Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
Merhaba,
Veri isminde bir sayfamız olsun. Veri sayfasında İsimlerden oluşan bir listemiz var.
Excel dosyası her açıldığında isim listesini yeniden güncelliyorum. Bu güncelleme işlemini açılan dosyadaki liste ile veri sayfasındaki liste farklı olduğunda yani kaynak sayfa-liste değiştirildiğinde çalıştırmak istiyorum

Bu veri sayfası en son kaydedilme ya da güncellenme tarihine VBA ile bakıp ona göre işlem yapabiliyor muyuz?
Yapabiliyorsak nasıl yapabiliyoruz
Böyle bir durum yoksa bu tarz bir işlemi nasıl yapıyorsunuz

Bu işlem Google Sheets de mümkün müdür?
 
Son kaydedilme zamanı, belgedeki sayfaya ait bir özellik değil, Çalışma Kitabına (belgeye) ait bir özellik.
Tavsiyem sayfaya veri kaydı sırasında, o sayfada uygun bir hücreye verinin kayıt zamanını yazdırmanız,
bu sayfaya yönelik güncelleme kodunda da bu hücredeki TARİH-SAAT bilgisini kontrol ettirmeniz yönünde olacak.
Hele veri kaynağındaki bilgilerle, belgenizdeki bilgilerin aynı olup olmadığının kontrolü diye bir şeyin olabilmesi için,
bilginin çekilmesi ve sonrasında değişiklik olup olmadığının kontrol edilmesi gerekir.
Yani bir bilgiyi ÇEKmeden, o veri yığınıyla belgenizdeki bir alanı nasıl karşılaştıracaksınız, değil mi?

Belki, belgenizin son kaydedilme zamanını öğrenmek istiyorsunuzdur.
Şu kod belgenin en son ne zaman kaydedildiğini gösterir.
Belgenizde uygun bir hücreye bu bilgiyi yazdırmak isterseniz; MsgBox yerine Sheets("xxx").Range("XXX")= yazarsınız.

VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(1 satır)

O halde veri çekme işlemiyle ilgili kod blokunun sonuna ThisWorkbook.Save True diye bir satır eklemek iyi olabilir.
Böylece aynı gün içerisinde veri çekilmişse, MsgBox'ta gösterilen zaman bilgisinin tarih kısmıyla BUGÜN tarihi karşılaştırılıp
güncelleme yapıp yapmama kararı verilebilir.

.
 
Son kaydedilme zamanı, belgedeki sayfaya ait bir özellik değil, Çalışma Kitabına (belgeye) ait bir özellik.
Tavsiyem sayfaya veri kaydı sırasında, o sayfada uygun bir hücreye verinin kayıt zamanını yazdırmanız,
bu sayfaya yönelik güncelleme kodunda da bu hücredeki TARİH-SAAT bilgisini kontrol ettirmeniz yönünde olacak.
Hele veri kaynağındaki bilgilerle, belgenizdeki bilgilerin aynı olup olmadığının kontrolü diye bir şeyin olabilmesi için,
bilginin çekilmesi ve sonrasında değişiklik olup olmadığının kontrol edilmesi gerekir.
Yani bir bilgiyi ÇEKmeden, o veri yığınıyla belgenizdeki bir alanı nasıl karşılaştıracaksınız, değil mi?

Belki, belgenizin son kaydedilme zamanını öğrenmek istiyorsunuzdur.
Şu kod belgenin en son ne zaman kaydedildiğini gösterir.
Belgenizde uygun bir hücreye bu bilgiyi yazdırmak isterseniz; MsgBox yerine Sheets("xxx").Range("XXX")= yazarsınız.

VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(1 satır)

O halde veri çekme işlemiyle ilgili kod blokunun sonuna ThisWorkbook.Save True diye bir satır eklemek iyi olabilir.
Böylece aynı gün içerisinde veri çekilmişse, MsgBox'ta gösterilen zaman bilgisinin tarih kısmıyla BUGÜN tarihi karşılaştırılıp
güncelleme yapıp yapmama kararı verilebilir.

.
Tarih yerine örneğin Giriş!$AA$1 hücresine bir sürüm numarası verip google e-tablolarda da yine $AA$1 hücresine sürüm numarası vermeyi ve bu numaralar eşleşmezse ya da biri diğerinden büyük olursa o zaman veri çekme işlemini başlatmayı düşünüyorum. çünkü tarih verisi içerisinde birden fazla içerik var ve bunlar ekstra işlemler gerektirecek sürüm numarası gibi bir numarayı kullanmak sanki daha mantıklı

Ancak google e-tablodan tek bir verinin nasıl alacağını şuan tam olarak bilmiyorum ve araştırıyorum @Selman bey belki bu konuda fikir verebilir.

Screenshot_2.webp
 
Moderatörün son düzenlenenleri:
Ben yapılmak istenen şeyi çok iyi anlamadım. Google sheette verileriniz var. Bunları excele aktarıyorsunuz. Eğer google sheette değişiklik olduysa excele yeniden aktarmak istiyorsunuz, değişiklik yoksa işlem yapmasın. Böyle bir şey mi? Örnek görebilirsem daha iyi olur.
 
Ben yapılmak istenen şeyi çok iyi anlamadım. Google sheette verileriniz var. Bunları excele aktarıyorsunuz. Eğer google sheette değişiklik olduysa excele yeniden aktarmak istiyorsunuz, değişiklik yoksa işlem yapmasın. Böyle bir şey mi? Örnek görebilirsem daha iyi olur.
@Selman bey dediğiniz gibi bir işlemdi.
Bu soruyu sorduktan sonra konuyu ve ihtiyacı biraz değiştirdik sanırım.
bu anlatılan yapıyı yapabilirim

Şuan öğrenmeye çalıştığım aşağıdaki işlem
bugüne kadar genelde google e-tablolardan birden fazla veriyi yani çoklu veri aldım ama tek bir hücreden veri almadım bunu siz bana gösterseniz yeterlidir.

şöyle örnekleyeyim
Demo Öğrenci Listesi
bu adresteki $AA$1 hücresindeki 111 değerini en basit bir şekilde VBA ile excel dosyama nasıl çekebilirim.

Screenshot_3.webp



Genelde Aşağıdaki kodu kullanıyorum ama dediğim gibi bu bir çok satır ve sütunu içeriyor.
Tek hücreden veri çekmek sanırım daha kısa ve farklı bir kodla olur düşüncesiyle soruyorum.

VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(24 satır)
 
Moderatörün son düzenlenenleri:
@Selman
Ben de bir şey sorayım. Çok bildiğim bir konu değil.
QUERY ile sayfaya yazdırılan tablo, sayfaya yazdırılmadan önce döngü vs ile bir şekilde tablo içerisinde gezinmek,
ya da bütün olarak bir diziye almak vs mümkün olabilir mi?
Bu mümkün olursa, sayfadaki verilerle karşılaştırma yapmak zor olmaz diye düşünüyorum.
Sadece bu konu için düşünmeyin, benimkisi genel bir soru; QUERY sonucu olan veriler, sayfaya aktarılmadan okunabilir mi?
 
@Selman
QUERY sonucu olan veriler, sayfaya aktarılmadan okunabilir mi?

Bende bunu uzun zamandır merak ediyorum @Ömer BARAN Bey

Dün chandoo . org'un forum sayalarında araştırma yaparken aşağıdaki gibi bir yapı gördüm ResultRange.Columns(1).Cells ile birinci sütundaki verileri döngüye alıp içeriğinde işlem yapıyordu. Sanırım sizde bunu kastediyorsunuz

Kod:
Görüntülemek için giriş yapmanız gerekmektedir.
(3 satır)
 
Moderatörün son düzenlenenleri:
Hayır, sanırım sizin yazdığınız şey zaten hücrede yazılı olan şeyin (bir verinin sağındaki hücrenin) okunması.
Bu kodun üstünde yer alan .ResultRange kısmının ne olduğu önemli.
Benim merak ettiğim şey, mevcut koddaki qry = .... satırının ardından, veriler sayfaya yazdırılmadan önce okunabiliyor mu?
 
Sn Meraklı, Resimdeki dosyaya göre konuşursam versiyon bilgisi AA sütünunda olduğu için "select AA" şeklinde bir query çalıştırmanız lazım. Böylece sadece başıktaki 111 bilgisini alırsınız.

Ömer bey, bu bilgi webden indirilen bir .csv dosyası içinde geliyor. Bu yüzden doğrudan excelin boş bir sayfasına açıp hücrelerde gezmek bana daha kolay geliyor.
 
Sn Meraklı, Resimdeki dosyaya göre konuşursam versiyon bilgisi AA sütünunda olduğu için "select AA" şeklinde bir query çalıştırmanız lazım. Böylece sadece başlıktaki 111 bilgisini alırsınız.
@Selman Bey direk tek hücreyi (örneğin $AA$1) referans gösterebiliyor muyuz?

Bunu şunun için soruyorum "SELECT AA" şeklinde bir query çalıştırdığımzda tüm sütunu aramış oluyoruz bu sorgunun az da olsa geç dönmesine sebep olacaktır.

Ancak $AA$1 şeklinde tek bir hücreyi hedefleyebilirsek daha hızlı bir sonuç döneceğini tahmin ediyorum. Ya da "SELECT AA WHERE AA<>'' " tarzında bir şeyde kullanılabilir mi?


Ömer bey, bu bilgi webden indirilen bir .csv dosyası içinde geliyor. Bu yüzden doğrudan excelin boş bir sayfasına açıp hücrelerde gezmek bana daha kolay geliyor.
@Selman Bey bu gelen CSV dosyası Temp içinde mi geliyor nereden fiziksel olarak bulup içine bakabiliriz
 
SELECT AA dediğinizde evet tüm sütun gelir ama anlattığınıza göre sütünda sadece 1 tane değer olacak ve bu durumda 1 tane değer gelecek. Eğer AA sütununda arada boşluklar bırakılarak farklı değerler varsa ve boşluk harici isteniyorsa o zaman SELECT AA WHERE AA<>'' gibi bir queryde yazılabilir.

Excel bunu direkt URL' den okuyup hücreye yazır. csv formatında dosyaya ihtiyacınız varsa makrodaki adres değişkeni içindeki url' yi browserın adres çubuğuna yapıştırın. CSV dosyası Downloads klasorünüze inecektir...
 
Üst