• DİKKAT

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

Bir klasör içerisindeki kapalı olan dosyalardan belirli kurala göre veri alma

Katılım
11 Mart 2010
Mesajlar
11
Excel Vers. ve Dili
microsoft office 2010
türkçe
Merhaba arkadaşlar,
Benim bir klasörüm var ve bu klasör içerisinde sayısı giderek artan excel dosyalarım var. Bu dosyalar içerisinde ise takip sekmesine işlemiş olduğum veriler var. Ekteki gibi bir genel liste oluşturmak istiyorum. Tarih bölümüne tarihi girip o klasör içerisindeki bütün dosyaları inceleyip tarihe göre ilgili yere verileri toplamasını istiyorum. Bunu gerçekleştirebilir miyim.
 

Ekli dosyalar

ARkadaşlar soruyu cevaplayabilecek kimse yok mu yoksa ben mi derdimi anlatamadım:(
 
Merhaba arkadaşlar,
Benim bir klasörüm var ve bu klasör içerisinde sayısı giderek artan excel dosyalarım var. Bu dosyalar içerisinde ise takip sekmesine işlemiş olduğum veriler var. Ekteki gibi bir genel liste oluşturmak istiyorum. Tarih bölümüne tarihi girip o klasör içerisindeki bütün dosyaları inceleyip tarihe göre ilgili yere verileri toplamasını istiyorum. Bunu gerçekleştirebilir miyim.

Sn Akinci42 tarihe göre toplamı nasıl almayı düşünüyorsunuz?

tarihe eşit, tarihten sonra yada tarihten önce

iyi çalışmalar...
 
Sn Akinci42

Aşağıda verdiğim kullanıcı tanımlı fonksiyonu kullanabilirsin.

Öncelikle kaynak dosyaların tümünde sütunları alan adı olarak tanımlanız gerekmektedir.
-abc pro.xls
-akm pro.xls
-dca pro.xls
-lggf pro.xls

alan adı tanımlama konusunda aşağıdaki linke göz atabilirsiniz.

http://www.excel.web.tr/f60/excelde-alan-adlary-ve-uygulamalary-t62687.html

formülün kullanımına gelince;

-KapDosya: Veriyi alacağınız kaynak dosyanın tam adını yazmalısınız ("C:\Users\.............\Documents\Excel\excel soru\abc pro.xls")
-TabloAdi : Veriyi alacağınız kaynak dosyadaki Sayfa adı ("takip")
-BakilanAlan1 : Tanımladığınız Alan Adı ("İşlem")
-ArananDeger1 :İşlem sütununda Arama kriteriniz ("Çatım" , "kaynak")
-BakilanAlan2 : Tanımladığınız Alan Adı ("tarih")
-ArananDeger2 : tarih sütunundaArama kriteriniz ("12.04.2012")
-SonucAlani : Almak istediğiniz verinin alan adı("c verisi")

Kod:
Function KapDuseyAraExcel(KapDosya As String, _
                     TabloAdi As String, _
                     BakilanAlan1 As String, _
                     ArananDeger1 As Variant, _
                     BakilanAlan2 As String, _
                     ArananDeger2 As Variant, _
                     SonucAlani As String) As Variant
                     
Dim adoCN As ADODB.Connection
Dim strSQL As String
Dim adoRS As ADODB.Recordset

    
    Set adoCN = CreateObject("ADODB.Connection")
    
    adoCN.Open "Driver={Microsoft Excel Driver (*.xls)}; DBQ=" & KapDosya & ";Readonly=True"
    Set adoRS = CreateObject("ADODB.Recordset")

    BakilanAlan1 = "[" & BakilanAlan1 & "]"
    BakilanAlan2 = "[" & BakilanAlan2 & "]"
 
    
    If Not IsNumeric(ArananDeger1) Then ArananDeger1 = "'" & ArananDeger1 & "'"
    If Not IsNumeric(ArananDeger2) Then ArananDeger2 = "'" & ArananDeger2 & "'"
    
    strSQL = "SELECT " & BakilanAlan1 & ", " & BakilanAlan2 & ", [" & SonucAlani & "] FROM [" & TabloAdi & "$]" & _
            " WHERE " & BakilanAlan1 & " like " & ArananDeger1 & " And " & BakilanAlan2 & " like " & ArananDeger2 & ";"
    
    adoRS.Open strSQL, adoCN, 3
   
    
    If adoRS.BOF And adoRS.EOF Then
        KapDuseyAraExcel = ""
    Else
       KapDuseyAraExcel = adoRS.Fields(SonucAlani).Value
       
    End If
    
    
    adoRS.Close
    adoCN.Close
    
End Function

takıldığınız konuları sorabilirsiniz , işinizi göreceği ümidiyle...

iyi çalışmalar.
 

Ekli dosyalar

  • abc pro.xls
    abc pro.xls
    27 KB · Görüntüleme: 21
  • Alan_Adi.jpg
    Alan_Adi.jpg
    51.8 KB · Görüntüleme: 17
Sn Tamer42
Öncelikle ilginiz için teşekkür ederim. Söylediğiniz gibi ad tanımlamalarını yaptım fakat kodu nereye yazacağımı bilemedim. Bir hücrenin makrosuna mı sayfanın makrosuna mı yazacağım anlayamadım. Denedim ama çalışmadı.
Benim yapmak istediğim aslında şu;
\\Server\uretim\Üretim takip dosyaları adında bir klasörüm var ve burada şu an için yaklaşık 20e yakın excel dosyası bulunmakta, bu dosyaların her biri bir iş için ve içinde çek listesi var adetleri ile birlikte atölyeden gelen günlük imalat raporlarını ilgili projeye işliyorum. belli bir gün geçtiğinde de verimlilk analizi için herhangi bir günde imal edilen tonajları toplamam gerekiyor. Her seferinde tek tek açıp ilgili tarih ve çatım yada kaynak işlemi için süzüyorum toplayıp yazıyorum. Yaptığım araştırmalara göre excelde dosyayı açmadan verileri aktarabiliyoruz sanırım bende belirli birr kural içerisinde aktarılabilir mi diye düşünmüştüm. Bunun için bir adet excel dosyası oluşturup bu dosyaya sadece tarihi gireceğim ve gerisini kendisi yapsın istemiştim. O kökteki excel dosyalarını A sutununa yazsın bunu denedim ama kök simleri ile birlike yazdırabildim. Ben sadece o dosyanın adını yazsın istiyorum. Daha sonra yazmış olduğu excel dosyasındaki veriyi ilğili yerden toplayıp çeksin.
Bu mümkün müdür yoksa fazla mı faztazi ürünüdür.
 
Sn Tamer42
Öncelikle ilginiz için teşekkür ederim. Söylediğiniz gibi ad tanımlamalarını yaptım fakat kodu nereye yazacağımı bilemedim. Bir hücrenin makrosuna mı sayfanın makrosuna mı yazacağım anlayamadım. Denedim ama çalışmadı.
......................



Sn Akinci42

bu bir kullanıcı tanımlı fonksiyon dur.
Kod:
Function KapDuseyAraExcel(KapDosya As String, TabloAdi As String, ...............)

  
End Function


1- Visual Basic Düzenleyicisi’ne yeni bir modül ekleyin (Insert -> Module)
2- Bu modülün içine fonksiyonun kodlarını yapıştırın ve hazırladığınız fonksiyonu kaydedin

kullanıcı tanımlı fonksiyonları Eklenti olarak Excel’e tanıtma;

1 - Farklı Kaydet seçeneğini seçin,

2- Açılan Farklı Kaydet diyalog kutusundan Kayıt Türü’nü Excel Eklentisi olarak seçin.


3- fx (İşlev) Ekle butonuna tıklayın
4- Kullanıcı Tanımlı (User Definied) kategorisini seçin. Karşınızda yeni yarattığınız KapDuseyAraExcel fonksiyonunu göreceksiniz
5- Verinin gelmesini istediğiniz hücreye bu fonksiyonu uygulayabilirsiniz.

fonksiyon kullanımı için ekli resimleri inceleyebilirsiniz.
 

Ekli dosyalar

  • fx1.jpg
    fx1.jpg
    47.2 KB · Görüntüleme: 12
  • fx2.jpg
    fx2.jpg
    38.6 KB · Görüntüleme: 9
  • fx3.jpg
    fx3.jpg
    48.2 KB · Görüntüleme: 7
Sn Akinci kullanıcı tanımlı fonksiyon ile uğraşmak istemiyorsanız;

ekli dosyada Module1 içerindeki (aşağıda) kodları doğrudan çalıştırırsanız Excel sayfasına yazdıracaktır.

bunun için öncelikle dosyaların bulunduğu klasör asını

MyPath = "\\Server\uretim\Üretim takip"

tam ve doğru olarak yazmalısınız.

Dosya adlarınını excel sayfasından alacaktır.

MyPrj = Cells(i, 5)

bunu istediğiniz gibi düzenleyebilirsiniz.
Kod:
Sub RaporTest2()
Dim i As Long
Dim MyPath As String
Dim MyPrj As String
Dim MyFile As String

Dim Kayit1 As Variant  ' Çatım
Dim Kayit2 As Variant  ' kaynak

For i = 2 To 5

    [B]MyPath = [color=red]"\\Server\uretim\Üretim takip"[/color][/B]

    MyPrj = Cells(i, 5)
        
    MyFile = MyPath & "\" & MyPrj

    Kayit1 = KapDuseyAraExcel(MyFile, "takip", "İşlem", "Çatım", "tarih", "12.04.2012", "c verisi")

    Kayit2 = KapDuseyAraExcel(MyFile, "takip", "İşlem", "kaynak", "tarih", "12.04.2012", "c verisi")


Cells(i, 7) = Kayit1  ' Çatım

Cells(i, 8) = Kayit2  ' kaynak

Next i

End Sub

iyi çalışmalar...
 

Ekli dosyalar

Geri
Üst