• DİKKAT

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

Kapalı Dosyadan Veri Çekme

Katılım
1 Ağustos 2019
Mesajlar
839
Excel Vers. ve Dili
Türkçe excel 2016
İngilizce excel 2016
Değerli arkadaşlar LİSTE ve VERİ AKTARMA isminde 2 adet çalışma kitabım var. VERİ AKTARMA açık LİSTE kapalı dosya olacak. LİSTE isimli sayfa veriler eklendikçe yenilenmektedir. Benim yapmak istediğim LİSTE isimli sayfadaki F sütunundaki verileri VERİ AKTARMA isimli sayfanın A sütununa LİSTENİN H sütunundaki verileri VERİNİN E sütununa LİSTENİN I sütununu VERİNİN F sütununa çekmek istiyorum ve çekilen her verinin karşılığına VERİ AKTARMA sayfasında J sütununda İşten Ayrıldı yazdırmak istiyorum. LİSTE isimli sayfada veriler işlem oldukça eski verilerin devamından itibaren eklenerek yenilenmektedir. Bunun için LİSTE isimli sayfadan veri çekerken önceden çektiğim verileri getirmemesi için bir kontrol mekanizması yapabilir miyiz. Örneğin en son çektiğimiz TC kimlik nosunu bir yere yazdırıp onun üzerinden kontrol yaptırabilir miyiz. Yardımlarınız için şimdiden teşekkürler
 

Ekli dosyalar

Merhaba,

Aşağıdaki kodu kullanabilirsiniz.
Veri aktarma excel'iniz de gereksiz koşullu biçimlendirmeler ve başka biçimlendirmeler yapılmış.
Bundan dolayı dosya biraz ağır çalışıyor. Eklediğim excel üzerinden devam edebilirsiniz.
Kod ile ilgili olarak çalışma kitaplarının başlıkları önemli, değişmemesi gerekiyor.
Size tavsiyem dosyalarınız başlıklarında aynı işlemlere farklı isimler vermemeniz.

C++:
Sub aktar()

son = Cells(Rows.Count, "A").End(3).Row

For i = 2 To son
    deg = deg & Cells(i, "A") & ","
Next i

Set con = VBA.CreateObject("adodb.Connection")

yol = ThisWorkbook.Path & "\" & "LİSTE.xlsx"

con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
yol & ";extended properties=""Excel 12.0;hdr=yes"""

sorgu = "select [T#C#],'','','',[İşten Çıkış Tarihi],[Çıkış Sebebi] ,'','','','İşten Ayrıldı' from[İşten Çıkış Listesi$]" & _
        "where [T#C#] is not null " & IIf(deg = Empty, "", "and [T#C#] not in (" & deg & ")")

Set rs = con.Execute(sorgu)
Range("A" & son + 1).CopyFromRecordset rs

con.Close

End Sub
 

Ekli dosyalar

Son düzenleme:
Merhaba,

Aşağıdaki kodu kullanabilirsiniz.
Veri aktarma excel'iniz de gereksiz koşullu biçimlendirmeler ve başka biçimlendirmeler yapılmış.
Bundan dolayı dosya biraz ağır çalışıyor. Eklediğim excel üzerinden devam edebilirsiniz.
Kod ile ilgili olarak çalışma kitaplarının başlıkları önemli, değişmemesi gerekiyor.
Size tavsiyem dosyalarınız başlıklarında aynı işlemlere farklı isimler vermemeniz.

C++:
Sub aktar()

son = Cells(Rows.Count, "A").End(3).Row

For i = 2 To son
    deg = deg & Cells(i, "A") & ","
Next i

Set con = VBA.CreateObject("adodb.Connection")

yol = ThisWorkbook.Path & "\" & "LİSTE.xlsx"

con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
yol & ";extended properties=""Excel 12.0;hdr=yes"""

sorgu = "select [T#C#],'','','',[İşten Çıkış Tarihi],[Çıkış Sebebi] ,'','','','İşten Ayrıldı' from[İşten Çıkış Listesi$]" & _
        "where [T#C#] is not null and [T#C#] not in (" & deg & ") "

Set rs = con.Execute(sorgu)
Range("A" & son + 1).CopyFromRecordset rs

con.Close

End Sub
Erdem Bey öncelikle ilginiz için teşekkür ederim. Çalışmanızı indirdim ancak bende çalışmadı. Verileri alamadım. Birde şunu öğrenmek istiyorum LİSTE isimli sayfadan verileri çekebilmek için VERİ AKTARMA sayfasının A sütununa TC kimlik numaralarını yazmam mı gerekiyor eğer öyle ise benim istediğim tam bu değildi yanlış anlaşılmış sanırım.
 
Dosyalarınız aynı klasörde olmalı.Herhangi birşey yapmanıza gerek yok.Hatanın ekran görüntüsünü ekleyebilir misiniz.
 
Dosyalarınız aynı klasörde olmalı.Herhangi birşey yapmanız gerek yok.
Aynı klasörün içinde Erdem Bey çalıştırdığımda şu hatayı alıyorum. Ancak VERİ AKTARMA sayfasının A2 hücresine bir rakam yazdığım zaman verileri çekiyor
 

Ekli dosyalar

  • Adsız.png
    Adsız.png
    46.3 KB · Görüntüleme: 12
  • Adsız2.png
    Adsız2.png
    34.4 KB · Görüntüleme: 12
Kodu güncelledim. Tekrar deneyebilir misiniz.
 
Sn @Erdem_34 Bey,

Dosya bende de çalışmadı aynı klasör içerisinde kodu çalıştırdığımda bir hata vermiyor ama veri de aktarmıyor.
 
Kodu güncelledim. Tekrar deneyebilir misiniz.
Sayın erdem guncellediginiz makro çalışıyor teşekkür ederim. Birinci mesajda belirttiğim gibi liste sayfası sürekli güncellenmekte ve yeni veriler eski verilerin altına eklenerek devam etmektedir. Ben yeni veri eklendiği zaman sadece bu listeden yeni eklenen verileri çekmek istiyorum. Bunada bir çözüm bulabilirmiyiz
 
Sayın erdem guncellediginiz makro çalışıyor teşekkür ederim. Birinci mesajda belirttiğim gibi liste sayfası sürekli güncellenmekte ve yeni veriler eski verilerin altına eklenerek devam etmektedir. Ben yeni veri eklendiği zaman sadece bu listeden yeni eklenen verileri çekmek istiyorum. Bunada bir çözüm bulabilirmiyiz
Zaten istediğiniz gibi çalışıyor. Farklı çalışan dosyalarınızı görmem gerekiyor.
 
Zaten istediğiniz gibi çalışıyor. Farklı çalışan dosyalarınızı görmem gerekiyor.
Erdem bey örneğin LİSTE isimli sayfadaki verileri ben bugün VERİ AKTARMA sayfasına çektim diyelim. Aradan 2 gün geçti ve ilgili birim işten ayrılan yeni personelleri LİSTE isimli klasöre ekleyerek bizimle paylaştı. Ben veri çekeceğim zaman 2 gün önce çektiğim verilerin gelmesini değil yeni eklenen verilerin gelmesini istiyorum. Sizin yazmış olduğunuz makroda her ikiside geliyor.
 
Yeni eklenenler geliyor zaten. Eskilerin silinmesini mi istiyorsunuz?
 
Yeni eklenenler geliyor zaten. Eskilerin silinmesini mi istiyorsunuz?
Erdem hocam mesela VERİ AKTARMA sayfasının herhangi bir hücresine en son işten çıkış tarihini yazdırıp daha sonra yeni eklenen verileri çekeceğim zaman bu işten çıkış tarihini kontrol ederek onun altına eklenen yeni tarihli verileri getirtmemiz mümkünmü belki bu şekilde sorun çözülür
 
Veri aktarma excel'ine anladığım kadarı ile Liste sayfasındaki verilerin hepsinin mükerrer olmadan gelmesi gerekiyor. Sizin istediğiniz veri aktarma sayfasına gelenler bir daha gelmemesi mi? Bunun için liste sayfasına bir sütun eklenir, veri aktarmaya gidenlerin yanına kod ile "x" konulur. Liste excelinden x olmayanlar getirilir. Hata olması durumunda "x" işaretini kendiniz liste excel'inden silersiniz.Tabi bunun için kodun değişmesi gerekecek.
 
Son düzenleme:
Veri aktarma excel'ine anladığım kadarı ile Liste sayfasındaki verilerin hepsinin gelmesi gerekiyor. Sizin istediğiniz veri aktarma sayfasına gelenler bir daha gelmemesi mi? Bunun için liste sayfasına bir sütun eklenir, veri aktarmaya gidenlerin yanına kod ile "x" konulur. Veri aktarma içinde x olmayanlar getirilir. Hata olması durumunda "x" işaretini kendiniz liste excel'inden silersiniz.Tabi bunun için kodun değişmesi gerekecek.
Teşekkürler Erdem bey ilginizden dolayı
 
@Erdem_34 Bey,

Bende veri getirmemesinin sebebi ne olabilir.
Dosyalar aynı klasör içerisinde Masaüstündedir.

y4W75U.gif
 
@gicimi TC kimlik numaralarını sayfada yazdığınız için gelmiyor. Veri aktarma sayfasında yazan TC'ler Liste sayfasından alınmıyor.
 
@Erdem_34 Bey teşekkür ederim. TC. Kimlik Numarası üzerinden arayıp buluyor diye düşünmüştüm.

Bilgilendirme için teşekkürler.
 
@Erdem_34 Bey eğer Veri Aktarma Dosyanın A sütunlarında Tc kimlik numarası yazılı olsaydı. Kodlarda nasıl bir güncelleme yapılması gerekir.
 
Merhaba
Benim sizden ricam da bu örneğe benzer bir şekilde seçilecek kapalı excel dosyasından verileri alarak termin tarihine göre sıralayacak ve termin tarihindeki aylara göre pivotta eklediğim gibi düzenleyecek.

Yardımlarınızı rica ederim
İyi akşamlar
 

Ekli dosyalar

Merhabalar tekrardan
Üslubum ile ilgili bir sıkıntı mı oldu acaba? Zira olduysa kusuruma bakmayın lütfen. :(
 
Geri
Üst