hücredeki ifadeyi klasördeki pdf dosyalarının içinde aramakla ilgili

tahsinanarat

Altın Üye
Katılım
14 Mart 2005
Mesajlar
2,164
Excel Vers. ve Dili
Ofis 2019 Türkçe
Altın Üyelik Bitiş Tarihi
27-05-2028
Tahsin Bey, Hikmet Bey;

Pdf dosyalarinin icerigini de taradi mi, yoksa sadece dosya adini mi taradi?


.
Sn. @Haluk Hocam; Dosya içerisinde ve dosya isminde aranan kelime veya cümlenin geçtiği pdf leri tarıyor, olanları pdf dosyalarını gösteriyor.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Bilgi için teşekkürler Tahsin Bey,

.
 
Katılım
19 Ağustos 2022
Mesajlar
52
Excel Vers. ve Dili
excel 2016
Altın Üyelik Bitiş Tarihi
19-08-2023
Benim eski bilgisayarda bahsettiğiniz 1000 satırlık işlemden sonra herhalde ekrandan dumanlar çıkardı.

Bu tür işler bilgisayarı çok yorar, onun yerine bulunan dosya adlarını ya sayfaya ya da UserForm'da ListBox gibi bir nesneye yazdırıp listelemekte fayda var. Daha sonra tıklayınca açarsınız, ne işlem yapacaksanız onu yaparsınız....

Bu benim fikrim tabii ...

.
sağolun hocam tekrar...
bu en son dediğiniz ile ilgili bir program bekliyim mi yoksa bu şekilde tamam mı diyorsunuz hocam..
son şekliyle güzel çalışıyor ellerinize sağlık, çok hücre olduğunda bilgisayarı kasıyor ama ona da bakacağım artık..
en azından güzel çalışma oldu sağolun..
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Valla, benden bu kadar...

.
 
Katılım
19 Ağustos 2022
Mesajlar
52
Excel Vers. ve Dili
excel 2016
Altın Üyelik Bitiş Tarihi
19-08-2023
merhabalar, konuyu hortlatmak gibi olacak ama sürekli ayar ve denemelerime rağmen bilgisayarın hızını aşamadım..sürekli takılıyor...

benim de şöyle birşey aklıma geldi, hücredeki ifadenin geçtiği dosya yoksa hiç klasör açmaya uğraşmasa, sadece ifadenin olduğu dosya varsa klasör açsa....böyle birşey mümkün müdür?

yani benim ifadenin olmadığını görmeme gerek yok, ifadenin olduğu dosyalar klasör içinde ekrana gelse yeterli benim için...

aksi takdirde, 1000 hücredeki 1000 ifadeyi tarattığımda 50 ifade varsa 950 klasör boşa açılıyor aslında ve bilgisayar illa ki biryerinde donuyor, kaldığı yerden de devam etmiyor, sürekli yeniden başlat diyorum ve bu işimi kolaylaştırmıyor maalesef...

uzman ve üstat arkadaşlardan ricam ilgilenebilirse sevinirim, özellikle haluk bey :)
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,159
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Hız için yöntem değiştirmelisiniz. Sürekli sizin ilk paylaştığınız kod üstüne yoğunlaştık.

Ben olsam aşağıdaki gibi bir kurgu ile sonuca gitmeyi tercih ederdim.

A sütununa aramak istediğim kelimeleri alt alta olacak şekilde yazardım.
Sonra B1 hücresine arama yapılacak klasör yolunu yazardım. Ya da burası klasör seçmeli olabilir. Siz arama yapılacak klasörü seçerek işleme devam edebilirsiniz.
Sonrasında butona tıkladığımda aranan kelimeleri içeren dosyaların adını link olarak D sütunu ve sonrasına hızlıca listelerdim.

Son aşamada ilgili dosyanın linkine tıklayarak dosyayı açabilirsiniz.
 
Katılım
19 Ağustos 2022
Mesajlar
52
Excel Vers. ve Dili
excel 2016
Altın Üyelik Bitiş Tarihi
19-08-2023
Hız için yöntem değiştirmelisiniz. Sürekli sizin ilk paylaştığınız kod üstüne yoğunlaştık.

Ben olsam aşağıdaki gibi bir kurgu ile sonuca gitmeyi tercih ederdim.

A sütununa aramak istediğim kelimeleri alt alta olacak şekilde yazardım.
Sonra B1 hücresine arama yapılacak klasör yolunu yazardım. Ya da burası klasör seçmeli olabilir. Siz arama yapılacak klasörü seçerek işleme devam edebilirsiniz.
Sonrasında butona tıkladığımda aranan kelimeleri içeren dosyaların adını link olarak D sütunu ve sonrasına hızlıca listelerdim.

Son aşamada ilgili dosyanın linkine tıklayarak dosyayı açabilirsiniz.
hocam sağolsun haluk hocam da bunu tavsiye etmişti, yapabilirseniz sevinirim demiştim...kendisi benden bu kadar demişti sağolsun...
yeni bir konu mu açmam lazım bunun için burdan yardım isteyebilir miyim ne dersiniz?
teşekkürler ilginiz için
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,159
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Deneyiniz.

Bahsettiğiniz çoklu arama işlemindeki süreyide bildirirseniz sevinirim.

C++:
Option Explicit

Sub Find_Text_in_Selected_Folder()
    Dim S1 As Worksheet, Process_Time As Double
    Dim My_Folder As Variant, Source_Folder As String
    Dim Find_Text As String, Last_Row As Long
    Dim Search_Data As Variant, X As Long
    Dim My_Connection As Object, My_Recordset As Object
    Dim My_Query As String, Y As Byte
    
    Set S1 = Sheets("Sayfa1")
    
    If WorksheetFunction.CountA(S1.Range("A:A")) = 0 Then
        MsgBox "İşleme devam edebilmek için A sütununa aramak istediğiniz kelimeleri yazmalısınız!", vbCritical
        Set S1 = Nothing
        Exit Sub
    End If
    
    Set My_Folder = CreateObject("Shell.Application").BrowseForFolder(0, "Kaynak dosyaları içeren klasörü seçiniz...", 50, &H0)
 
    If My_Folder Is Nothing Then
        MsgBox "İşleme devam edebilmek için klasör seçimi yapmalısınız!" & Chr(10) & _
               "İşleminiz iptal edilmiştir.", vbCritical
        Exit Sub
    ElseIf My_Folder = "Masaüstü" Or My_Folder = "Desktop" Then
        Source_Folder = Environ("UserProfile") & "\Desktop\"
    ElseIf Not My_Folder Is Nothing Then
        Source_Folder = My_Folder.Items.Item.Path
    End If
    
    Process_Time = Timer
    
    Application.ScreenUpdating = False
    
    Set My_Connection = CreateObject("AdoDb.Connection")
    Set My_Recordset = CreateObject("AdoDb.Recordset")
    
    My_Connection.Open "Provider=Search.CollatorDSO;" & _
                       "Extended Properties='Application=Windows';"
        
    S1.Range("D:F").Clear
    Last_Row = 1
    
    Search_Data = S1.Range("A1:A" & WorksheetFunction.Max(2, S1.Cells(S1.Rows.Count, 1).End(3).Row)).Value
    
    For X = LBound(Search_Data) To UBound(Search_Data)
        If Search_Data(X, 1) <> "" Then
            Find_Text = Search_Data(X, 1)
        
            My_Recordset.Open "Select System.ItemName, System.ItemFolderPathDisplay " & _
                              " From SystemIndex" & _
                              " Where Scope = 'File:" & Source_Folder & "' " & _
                              " And Contains('" & Replace(Find_Text, " ", "?") & "')", My_Connection
            
            If Not My_Recordset.EOF Then
                My_Recordset.MoveFirst
                Do Until My_Recordset.EOF
                    With My_Recordset.Fields
                        S1.Cells(Last_Row, "D") = .Item("System.ItemFolderPathDisplay")
                        S1.Cells(Last_Row, "E") = .Item("System.ItemName")
                        S1.Cells(Last_Row, "F") = Find_Text
                        S1.Hyperlinks.Add Anchor:=S1.Cells(Last_Row, "E"), _
                        Address:=S1.Cells(Last_Row, "D").Value & _
                        Application.PathSeparator & S1.Cells(Last_Row, "E").Value, _
                        TextToDisplay:=S1.Cells(Last_Row, "E").Value
                        Last_Row = Last_Row + 1
                    End With
                    My_Recordset.MoveNext
                Loop
            End If
        
            My_Recordset.Close
        End If
    Next
        
    Columns("D:F").AutoFit
    
    My_Connection.Close
    
    Set S1 = Nothing
    Set My_Folder = Nothing
    Set My_Recordset = Nothing
    Set My_Connection = Nothing

    Application.ScreenUpdating = True
    
    MsgBox "İşleminiz tamamlanmıştır." & vbCrLf & vbCrLf & _
           "İşlem süresi ; " & Format(Timer - Process_Time, "0.00") & " Saniye", vbInformation
End Sub
 
Katılım
19 Ağustos 2022
Mesajlar
52
Excel Vers. ve Dili
excel 2016
Altın Üyelik Bitiş Tarihi
19-08-2023
hocam süper oldu gibi...deneme yaptım lakin eve geçtiğimde asıl dokümanda tekrar deneyeceğim ve size bilgi döneceğim.
hemen ilgilendiğimi bilmeniz için yazdım bu mesajı, teşekkürler kolay gelsin..
 
Katılım
19 Ağustos 2022
Mesajlar
52
Excel Vers. ve Dili
excel 2016
Altın Üyelik Bitiş Tarihi
19-08-2023
run-time error "-2147217900 (80040e14)":
method 'open' of object '_Recordset' failed

gibi bir hata verdi hocam...ne olduğunu hiç anlamadım
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,159
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Denediğiniz sistem bilgileri nedir?
 
Katılım
19 Ağustos 2022
Mesajlar
52
Excel Vers. ve Dili
excel 2016
Altın Üyelik Bitiş Tarihi
19-08-2023
64 bit windows 10 home, excel 2017
 
Katılım
19 Ağustos 2022
Mesajlar
52
Excel Vers. ve Dili
excel 2016
Altın Üyelik Bitiş Tarihi
19-08-2023
hocam bir yerden excel indiriyorum fatura bilgilerini içeren...10 sütunluk 4000 satırlık bir excel...
her gün de ben 50-60 adet fatura indiriyorum...excel bu faturalarla birlikte hergün güncelleniyor , bu exceli de indiriyorum her akşam...
bu excel ile faturaları match etmeye çalışıyorum..
normalde pdf yi açıp şu no var mıdır bu no var mıdır diye excelde aratıyordum...
bu da zamanımı alıyor tabi...
ben de dedim ki exceldeki bazı sütunları alt alta koyup tüm pdf lerde aratayım çıkanları da eşlerim diye düşündüm...

eğer bu hızlı olursa sonraki aşamada şunu da soracaktım...

örneğin a3 hücresindeki değeri bulduğu pdf dosyasının ismini c3-e3 diye güncelleyebilir miyim? (tabi c3- e3 derken o sütundaki ifadeler olacak, c3'deki ifade-e3'deki ifade) gibi...
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,159
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Ben hata mesajını netten biraz araştırdım ama net bir cevap bulamadım.

Farklı bir bilgisayarda deneyiniz.

Ben Windows 11 / Excel 2016 İngilizce 32 Bit sürümde denedim. Sorun çıkmadı.
 
Katılım
19 Ağustos 2022
Mesajlar
52
Excel Vers. ve Dili
excel 2016
Altın Üyelik Bitiş Tarihi
19-08-2023
buldum hocam hatanın sebebini...
ifadede boşluk olunca hata veriyor...

001-6538 6786 hücrede bu ifade vardı, buraya gelince hata verdi...
çözümü var mı hocam, çok teşekkürler

 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,159
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Kodda küçük bir revize yaptım. Güncel halini tekrar deneyiniz.
 
Katılım
19 Ağustos 2022
Mesajlar
52
Excel Vers. ve Dili
excel 2016
Altın Üyelik Bitiş Tarihi
19-08-2023
günaydınlar hayırlı sabahlar...
hocam ellerinize sağlık çok güzel çalıştı..
elleriniz dert görmesin çok sağolun..
son bir ricam daha vardı, siz de diyeceksiniz çok oluyorsun diye ama bilene ağır gelmez diye düşünüyorum..
ben de teknik analiz yapıyorum bistte, soran arkadaşlara hemen bakıyorum hiç gocunmuyorum, insan bilgilerini paylaştıkça huzurlu oluyor, umarım siz de aynı düşüncedesinizdir.
benim son sorum şu olacaktı; bu a sütunundaki ifadeleri arayıp bulduğu pdf dosyasının ismini b ve c sütunundaki ifadeleri araya tire(-) koyarak biraraya getirip güncel adı yapabilir mi?
örneğin; a1 deki ifadeyi bulduğu gjdjdjdjdjjdjdjdjd.pdf isimli dosyayı b2'deki ifade-c2'deki ifade şeklinde yeniden isimlendirsin.
bu da olursa ekstra harcadığım zamanı iyice düşürecek...

ayrıca son denemem de a sütunundaki 12891 satırdaki ifadeyi 23 saniyede taradı...(bilgi verir misiniz demiştiniz)
 
Katılım
19 Ağustos 2022
Mesajlar
52
Excel Vers. ve Dili
excel 2016
Altın Üyelik Bitiş Tarihi
19-08-2023
benim excelim yani indirdiğim doküman 3 sütunlu değil, ben de en başta düzenliyorum onu, bu aradığım ifadeleri a sütununa koyuyorum, sonra isimlerini verebileceğim ifadeleri de b ve c sütununa koyacağım, eğer olur derseniz..
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,159
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Örnek dosyanızı paylaşın. Dosyanızda kurgunun nasıl olmasını istiyorsanız belirtin. Ona göre düzenleyelim.
 
Katılım
19 Ağustos 2022
Mesajlar
52
Excel Vers. ve Dili
excel 2016
Altın Üyelik Bitiş Tarihi
19-08-2023
Örnek dosyanızı paylaşın. Dosyanızda kurgunun nasıl olmasını istiyorsanız belirtin. Ona göre düzenleyelim.
hocam örnek dosya ektedir.
fatura isimleri olan dosyayı etiklik ve gizlilik nedeniyle paylamadım hoş görürsünüz umarım.
örnek dosyada belirttiğim gibi a sütununda bulunan ifadenin geçtiği dosyanın ismi "bsütunundaki ifade-c sütunundaki ifade" şeklinde güncellenecek.
ben son kodunuzu çalıştırdıktan sonra manuel yapıyordum, eğer bunu da kodla yaparsak işim kolaylaşacak.
ayrıca dikkat ederseniz b sütunundaki ifadelerde bazen / ve - işaretleri geçebiliyor, bunları güncel isimlendirme yaparken yok sayması iyi olur(hatalı gelmemesi için, çünkü bazı sistemlerde / işaretini isimde kabul etmiyor, bazıları otomatik siliyor)

hocam bir de bu yeniden isimlendirme yaparken belki şu hatayla karşılaşabilirim..
a sütunundaki ifade birden fazla pdf'de olabilir(ya da faturada)...bu durumda 2.aynı isimlendirmeyi yaparken üstüne değil de örneğin;
ilk fatura isimlendirildi "uakatlm5663-gülsen" oldu
ikinci fatura da aynı isim verilmek istenirse üstüne değil de "uakatlm5663-gülsen2" şeklinde olursa güzel olur.
bu sonradan çıkabilecek hata aklıma geldi ondan dedim şimdiden, baştan çözüm bulmak adına.

kolay gelsin hocam sağolun tekrar...
 

Ekli dosyalar

Üst