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

Katılım
19 Ağustos 2022
Mesajlar
52
Excel Vers. ve Dili
excel 2016
Altın Üyelik Bitiş Tarihi
19-08-2023
dosya uzantıları aynen kalacak tabi hocam..ona değinmedim ama, genelde pdf'de aratıyorum..isimler güncellendiğinde uzantısı yine pdf olacak.
kolay gelsin.
 

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
Faturalarınızın orjinali ile bir işimiz yok..

Bu fatura isimlendirme işlemi faturanın bulunduğu klasörde mi olacak? Yoksa masaüstünde yeni bir klasör oluşturulup burada mı yapılacak?

Çünkü yazdıklarınızdan anladığım kadarıyla bir faturanın içinde birden fazla aranan kayıt varsa bu fatura kopyalanarak çoğaltılacak.

Ayrıca isimlerdeki / - gibi sembollerin sorun çıkardığını belirtmişsiniz. Fakat birleştirme işleminde yine - (tire) kullanmışsınız. Bu sorun yaratmayacak mı?
 
Katılım
19 Ağustos 2022
Mesajlar
52
Excel Vers. ve Dili
excel 2016
Altın Üyelik Bitiş Tarihi
19-08-2023
Faturalarınızın orjinali ile bir işimiz yok..

Bu fatura isimlendirme işlemi faturanın bulunduğu klasörde mi olacak? Yoksa masaüstünde yeni bir klasör oluşturulup burada mı yapılacak?

Çünkü yazdıklarınızdan anladığım kadarıyla bir faturanın içinde birden fazla aranan kayıt varsa bu fatura kopyalanarak çoğaltılacak.

Ayrıca isimlerdeki / - gibi sembollerin sorun çıkardığını belirtmişsiniz. Fakat birleştirme işleminde yine - (tire) kullanmışsınız. Bu sorun yaratmayacak mı?
yok hocam isim de olsa dert eden eder, sizle ilgili bir konu değil yani...sonuçta herkese açık bir yer...
sorduklarınıza gelirsek,
fatura içinde dediğiniz gibi birden fazla aranan kayıta bakacağız, ben alt alta sıralayacağım, yanlarına da b ve c sütunundaki ifadeleri yazacağım...isimlendirme yaparken bu b ve c sütunundaki ifadeleri yan yana getirmesi yeterli olacak...

örneğin ben faturada d,e,f .. sütunlarındaki ifadeyi de aratıyor olacağım...ama her ifade o faturada geçmiyor işte...örneğin kiminin adresi kiminin tc si geçiyor faturada...tc geçiyorsa o tc ye ait b ve c sütunundaki ifadeleri yan yana getirip faturayı yeniden isimlendirecek..

yeni isimli dosyalar bulunduğu klasörde de olabilir ayrı bir klasörde de olabilir hangisi daha hızlı ve etkin olursa siz bilirsiniz hocam..
aynı klasörde de olsa ben ayırırım zaten..

birden fazla faturada aynı tc varsa; bu durumda da üstüne kaydetmesin, isim2 ya da isim(2) diye kaydetsin yeterli...

son yaptığınız koddan sonra bir kod daha çalıştırılabilir belki...

bir de son yaptığınız kod sonrası linkler çalışmıyordu hocam...(bu dert değildi benim için dosyada manuel isimlendirme yaptığım için, onun için söylememiştim)
 

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
En son soruma yorum yapmamışsınız sanırım..
 
Katılım
19 Ağustos 2022
Mesajlar
52
Excel Vers. ve Dili
excel 2016
Altın Üyelik Bitiş Tarihi
19-08-2023
En son soruma yorum yapmamışsınız sanırım..
hocam genelde / işareti sorun çıkarıyor, - olmasın derken de güncel isim düz olsun diye dedim, b ve c sütunundaki ifadeler anlaşılsın diye...
aratırken - işareti sorun çıkarmıyor ama güncel isim yazarken olmazsa da iyi olur..
 

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
Merhaba,

63 nolu mesajınızda linklerin çalışmadığını belirtmişsiniz. Ben şimdi tekrar denedim bir sorun göremiyorum. Linkler çalışıyor. PDF linkleri olduğu için bazen dosyayı açarken güvenlik sebebiyle uyarı verebiliyor. O uyarıya tamam diyerek devam ettiğinizde dosya açılıyor. En azından bende bu şekilde oluyor.

Son talebiniz için aşağıdaki kodu deneyiniz.

Hazırladığım kod masaüstünde "Arama Sonuçları" adında bir klasör oluşturarak dosya isimlerini bu klasörde düzenler.

C++:
Sub Change_Filenames()
    Dim S1 As Worksheet, My_Data As Variant, FSO As Object
    Dim My_Folder As String, Process_Time As Double
    Dim My_Array As Object, Separator As String, X As Long
    Dim Search_Text As String, Find_Text As Range
    Dim Old_File_Name As String, New_File_Name As String
   
    Process_Time = Timer
   
    Application.ScreenUpdating = False
   
    Set S1 = Sheets("Sayfa1")
    Set My_Array = VBA.CreateObject("Scripting.Dictionary")
    Set FSO = VBA.CreateObject("Scripting.FileSystemObject")

    Separator = Application.PathSeparator

    My_Folder = VBA.CreateObject("WScript.Shell").SpecialFolders("Desktop") & Separator & "Arama Sonuçları"

    If Dir(My_Folder, vbDirectory) = "" Then MkDir My_Folder
   
    My_Data = S1.Range("D1:F" & WorksheetFunction.Max(2, S1.Cells(S1.Rows.Count, 4).End(3).Row)).Value
   
    For X = LBound(My_Data, 1) To UBound(My_Data, 1)
        Search_Text = My_Data(X, 3)
        Set Find_Text = S1.Range("A:A").Find(Search_Text, , , xlWhole)
        If Not Find_Text Is Nothing Then
            If Find_Text.Offset(, 1) <> "" And Find_Text.Offset(, 2) <> "" Then
                Old_File_Name = My_Data(X, 1) & Separator & My_Data(X, 2)
                New_File_Name = My_Folder & Separator & Replace(Replace(Find_Text.Offset(, 1) & "_" & _
                Find_Text.Offset(, 2), "/", ""), "-", "") & _
                "." & FSO.GetExtensionName(My_Data(X, 2))
               
                If Not My_Array.Exists(New_File_Name) Then
                    My_Array.Add New_File_Name, 0
                    If Dir(New_File_Name) = "" Then
                        FSO.CopyFile Old_File_Name, New_File_Name
                    End If
                Else
                    My_Array.Item(New_File_Name) = My_Array.Item(New_File_Name) + 1
                    New_File_Name = My_Folder & Separator & FSO.GetBaseName(New_File_Name) & "_" & _
                    My_Array.Item(New_File_Name) & "." & FSO.GetExtensionName(My_Data(X, 2))
                    If Dir(New_File_Name) = "" Then
                        FSO.CopyFile Old_File_Name, New_File_Name
                    End If
                End If
            End If
        End If
    Next

    My_Array.RemoveAll
    Erase My_Data

    Set Find_Text = Nothing
    Set S1 = Nothing
    Set My_Array = Nothing
    Set FSO = 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
run time error 76
path not found
hatası verdi hocam,

excelde sonuçlar şu şekilde oluyor, d sütununda dosyaların bulunduğu yol, e sütununda dosya isimleri(uzantılarıyla beraber) ve f sütununda a sütununda olan ve aranıp bulunan ifade oluyor...
acaba ben dosyayı özellikle biryere mi koymam lazım bilemedim..
b ve c sütunlarında da güncel isimlendirmede kullanılacak ifadeler var.
 

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
Sanırım ben İngilizce sistemde denediğim için sorun yaşamıyorum. Şimdi oğlumun Türkçe bilgisayarında denediğimde benzer sorunları bende yaşadım. Biraz üzerinde çalışayım. Sonuç bulursam paylaşırım.
 
Katılım
19 Ağustos 2022
Mesajlar
52
Excel Vers. ve Dili
excel 2016
Altın Üyelik Bitiş Tarihi
19-08-2023
çok sağolun hocam, Allah razı olsun uğraşıyorsunuz, kolay gelsin
 

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
Daha önce benzer kod yapıları kullanmıştım. Hiç böyle bir durumla karşılaşmamıştım.

Ben arama klasörünü masaüstüna alarak deneme yapıyorum.

İş bilgisayarımda İngilizce sistem ve ofis kullanıyorum.

Masaüstü yolu olarak makro bana aşağıdaki sonucu veriyor.

"C:\Users\Kullanıcı_Adı\Desktop\Test"

Doğal olarak makronun oluşturduğu köprü sorunsuz çalışıyor. Dosya adı değiştirme makrosuda sorunsuz çalışıyor.


Aynı makroyu evdeki Türkçe sistemde denediğimde masaüstü yolu olarak bana aşağıdaki sonucu veriyor. Sayfaya bilgi bu şekilde dönüyor.

C:\Kullanıcılar\Kullanıcı_Adı\Masaüstü\Test"

Dosya isimlerini değiştirmek için kullandığım kodda ise masaüstü yolu olarak aşağıdaki sonuç dönüyor. "Arama Sonuçları" isimli klasörü ben makro ile oluşturuyorum.

"C:\Users\Kullanıcı_Adı\Desktop\Arama Sonuçları"

Ben dosyayı bulunduğu klasörden oluşturduğum yeni klasöre ismini sizin verdiğiniz parametrelere göre düzenleyip kopyalayarak sonuca gitmeyi tercih ettim. Doğal olarak bu aşamada sayfada yazan Türkçe dosya yolunu kullanınca sıkıntı oluşuyor.

Daha önce böyle bir durumla hiç karşılaşmamıştım. Böylece bunu da görmüş olduk...

Neyse ben çözüm olarak Kullanıcılar ve Masaüstü ifadelerini İngilizce'ye çevirerek sonuca gitmeyi tercih ettim. Şimdilik aklıma bu çözüm geldiği için bu yöntemi kullandım. Başka klasörler seçerek işlem yapmak istediğinizde de benzer hatalar oluşabilir. Bu sebeple bu makroyu kullanırken siz de arama yapacağınız klasörü masaüstüne kopyalayıp öyle deneyiniz. (Tabi diğer türlü deneyip kodun hata verme durumunu da kontrol edebilirsiniz.)

Ben sonuç aldığım dosyayı ekte paylaşıyorum.

Önce MAVİ renkli butona tıklayınız. Sonrasında TURUNCU renkli butona tıklayınız. Umarım sizde de hata vermeden çalışır.
 

Ekli dosyalar

Katılım
19 Ağustos 2022
Mesajlar
52
Excel Vers. ve Dili
excel 2016
Altın Üyelik Bitiş Tarihi
19-08-2023
hocam kısa bir excelde yaptım çalışıyor görünüyor, dediğiniz gibi yaptım..
elleriniz dert görmesin..Allah razı olsun..
son bir isteğim olacaktı, bunu da öncesinde tahmin etmediğim kadar zamanımı aldığı için söylüyorum..
eğer ki olmaz yeter artık derseniz de Allah razı olsun..
ekte örnek excel var..
ben öncesinde demiştim ya düzenleyip aratacağım diye...
düzenlemek o kadar zamanımı aldı ki...
varsa bir çözüm çok sevineceğim...
ben öncesinde dediğim düzenlediğim kısım, kod1 , kod2 , kod3 ve kod4 kısımları referans2 ve staff bilgileri aynı satırda olacak şekile getiriyorum..
çok satır olunca baya uğraştım..
eğer mümkünse, hiç a sütununda aratsın derdi olmadan.... c,d,e ve h sütunlarında olan kodları bizim klasörde arasın ve hangisini bulduysa o dosyayı yine dediğimiz gibi b ve g sütunlarındaki ifadeyi yan yana getirerek isimlendirsin.....
yani arama kısmı a sütunu diye sınırlı olmayacak....c,d,e ve h sütunlarında arayacak ya da gerekirse 5. ve 6. sütunda da arayacak...isimlendirmeyi de b ve g sütunlarındaki ifadeyi yan yana getirerek yapacak...

aramada belki şu sıkıntı olabilir...h sütunundaki kodların arasında virgül var...bunları ayrı ayrı arayacak....yani h sütununda 1 ifade varsa onu arayacak....virgül kullanılarak ifade1,ifade2,ifade3 diye yazılmışsa ifade1 i ayrıca arayacak, ifade2 yi ayrıca arayacak, ifade3 ü ayrıca arayacak,......gibi

olursa süper olacak hocam...

şimdi mükemmel onu demeliyim, tekrar Allah razı olsun...
 

Ekli dosyalar

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
Korhan Bey, masaustu yolunu kodla bulsaniz, sorun cozulur sanirim....


.
 

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
Haluk Bey,

48 nolu nesajimdaki kodu çalıştırınca Türkçe sistemde aşağıdaki yolu döndürüyor.

"C:\Kullanıcılar\Kullanıcı_Adı\Masaüstü\Test"

Sonra ikinci kod ile yukarıdaki yolda bulunan dosyayı kopyalayarak masaüstünde sonuçları göstereceğimiz klasörü oluşturup işlem yap dediğim aşamada işler ters gidiyor. Vba tarafında sayfada yazan Türkçe yolu algılamıyor ve hata veriyor. Köprülerde diğer arkadaşta büyük ihtimalle bu yüzden çalışmıyordu. Konu başından beri ben hep İngilizce sistemde deneme yapıyordum. O yüzden bu sorunu yakalayamadım.
 

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
Korhan Bey, sehir disinda oldigum icin bilgisayarim yok.

Demek istedigim; sozkonusu massustu yolunu oyle lullanmayin, VBA kodlariyla bulun.

.
 

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
Asagidaki gibi;


Set objShell = CreateObject("Wscript.Shell") strDesktop = objShell.SpecialFolders("Desktop")

.
 

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
Haluk Bey,

Verdiğiniz örneği zaten ikinci kod bloğunda kullanıyorum.

Evdeki bilgisayarda Türkçe sistem kurulu (Windows+Ofis) ve aşağıdaki sorunlar oluşuyor.

İlk kod bloğunda aşağıdaki sorgu var. (Bu sorgunun benzerini sizde başka bir konuda paylaşmıştınız...)

C++:
            My_Recordset.Open "Select System.ItemName, System.ItemFolderPathDisplay " & _
                              " From SystemIndex" & _
                              " Where Scope = 'File:" & Source_Folder & "' " & _
                              " And Contains('" & Replace(Find_Text, " ", "?") & "')", My_Connection
Bu sorgu sonucunda Türkçe sistemde eğer seçilen klasör masaüstü ise aşağıdaki şekilde sonuç veriyor. Zaten doğrusuda bu şekilde olmalı.. Çünkü sistem Türkçe..

"C:\Kullanıcılar\Kullanıcı_Adı\Masaüstü\Test"

Aynı sorgu ile sayfaya hem dosya yolunu hem de dosya adını yazdırıyorum. Buraya kadar sorun yok. Sonrasında bu klasöre ve dosyaya kolay erişim için standart köprü ekleme kodlarını kullanıyorum. Kodun çalışması bittikten sonra köprüler Türkçe yol bilgisinden dolayı hata veriyor. Köprülere tıkladığınızda dosya ya da klasör açılmıyor. Hata veriyor. Ben de makro kaydet ile köprüleri elle tekrar oluşturdum ve aradaki farkı gördüm. Yol Türkçe sisteme göre olduğu için VBA tarafında sorun oluyor.

Ben konu başından beri bütün kodları işyerindeki İngilizce sistemde deniyordum. Bu sebeple bu sorunların olabileceğini tahmin edemedim. Arkadaş hata veriyor deyince ve bende evde denemeye karar verince bu sorunları gördüm.
 

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
Korhan bey;

VBA ile Excel versiyonunun Ingilizce olup olmadigi bulunabilir ve eger Ingilizceyse, Replace komutuyla "Kullanicilar" ve "Masaustu" ifadeleri Ingilizce karsiliklariyla Replace edilebilir.

Bilgisayar olmadigi icin kodu yazma sansim yok ama bu sekilde yapilir sanirim.

.
 

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
Haluk Bey,

Bu çözüme 70 nolu mesajımda son paragrafta değinmiştim. Önerileriniz için çok teşekkürler.

Neyse ben çözüm olarak Kullanıcılar ve Masaüstü ifadelerini İngilizce'ye çevirerek sonuca gitmeyi tercih ettim. Şimdilik aklıma bu çözüm geldiği için bu yöntemi kullandım. Başka klasörler seçerek işlem yapmak istediğinizde de benzer hatalar oluşabilir. Bu sebeple bu makroyu kullanırken siz de arama yapacağınız klasörü masaüstüne kopyalayıp öyle deneyiniz. (Tabi diğer türlü deneyip kodun hata verme durumunu da kontrol edebilirsiniz.)
 
Katılım
19 Ağustos 2022
Mesajlar
52
Excel Vers. ve Dili
excel 2016
Altın Üyelik Bitiş Tarihi
19-08-2023
merhaba korhan hocam, 71 nolu mesajıma cevap vermediniz henüz ama bu kadarlık yeter mi anlayayım:) yoksa bir çalışma gelecek mi?

kolay gelsin çok sağolun tekrar...

yaptıkça yaptıkça farklı durumlar çıkıyor o sebeple ekstra gibi istekler oluyor ama inanın planlı yapmıyorum hakkınızı helal edin.

örneğin ben tüm kodları alt alta yazıp aratıyordum, şimdi bir sıkıntı belirdi, aynı satırda olan 4 ya da daha fazla koddan birini buldu mu isimlendirmeyi yapmasını istiyordum ya, örneğin bir faturada bu aynı satırdaki kodlardan 2-3 tane olunca bu sefer aynı faturayı daha çok isimle getiriyor...

eğer 71 nolu mesajımla ilgilenecek olursanız ya da ilgileniyorsanız bu durumu da belirtmem iyi olacak..

eğer uğraşmıyorsanız da sıkıntı yok hocam sağolun, biraz uğraşırız artık:)
 

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
Bahsettiğiniz mesajınızla açıkçası uğraşmıyorum. Başka bir başlık açarak normal varolan listenizi bu başlık altında paylaşmış olduğunuz dosyadaki A sütunundaki listeye dönüştürecek makro için destek talebi oluşturabilirsiniz.
 
Üst