bir klasörün içinde "abc" ile başlayan jpg uzantılı dosyaların sayıs

Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Esenlikler
excel vba ile bir klasörün içinde "abc" ile başlayan jpg uzantılı dosyaların sayısını nasıl tespit edebiliriz?

klsr =c:\resim
bas = "abc"
son = ".jpg"
Ara = ???
adt = Ara.????
 

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
Kod:
Sub Test()
    MyPath = "C:\Resim"
    MyFile = Dir(MyPath & "\*.jpg", vbDirectory)
    Do While MyFile <> ""
        If MyFile Like "abc*" Then
            adt = adt + 1
        End If
        MyFile = Dir
    Loop
    MsgBox "Bulunan dosya sayısı : " & adt & " adet"
End Sub
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
te&#351;ekk&#252;r ederim hocam eme&#287;inize sa&#287;l&#305;k
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
hocam ancak bir sorun var
ben çalıştırdığımda If MyFile Like "[vtmahbirimler.xls-ilveilce]_[E8_H21]*" Then
satırında invalid pattern string hatası veriyor... ne yapabilirz?

Kod:
Sub TestKlsSay()
Dim MyPath, MyFile As String
Dim araIsm
Dim adt As Integer
    MyPath = "C:\Resim"
    araIsm = "[vtmahbirimler.xls-ilveilce]_[E8_H21]*"
    MyFile = Dir(MyPath & "\*.jpg", vbDirectory)
    Do While MyFile <> ""
        If MyFile Like "[vtmahbirimler.xls-ilveilce]_[E8_H21]*" Then
'        If MyFile Like araIsm Then
            adt = adt + 1
        End If
        MyFile = Dir
    Loop
    MsgBox "Bulunan dosya sayısı : " & adt & " adet"
End Sub
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,109
Excel Vers. ve Dili
Office 2013 İngilizce
Kod:
If MyFile Like "[vtmahbirimler.xls-ilveilce]_[E8_H21]*" Then

bu satırı silin
 

Kemal Demir

Özel Üye
Katılım
29 Temmuz 2004
Mesajlar
2,108
Haluk Bey'&#238;n kodunda &#351;&#246;yle bir de&#287;i&#351;iklik yapmam&#305;zda bir mahsur yoktur umar&#305;m.
Kod:
Sub Test()
    MyPath = "C:\Resim"
    myfile = Dir(MyPath & "\*.jpg", vbDirectory)
    Do While myfile <> ""
[b][u]' ifadenizde ilk 3 harften bahsediyorsan&#305;z e&#287;er ,a&#351;ag&#305;daki kod'uda kullanabilirsiniz[/b][/u] 
       If Left(myfile, 3) = "abc" Then
            adt = adt + 1
isim = MyFile & vbCrLf & isim
        End If
        myfile = Dir
    Loop
    MsgBox "Bulunan dosya say&#305;s&#305; : " & adt & " adet"
MsgBox "Bulunan dosya isimler: " & vbCrLf & isim & vbCrLf
End Sub
Haluk Hocam&#305;z&#305;n izni ile;
 
Son düzenleme:
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Sn Rakkas kodlar&#305; hen&#252;z denemedim ancak ilk &#252;&#231; harf diye bir k&#305;s&#305;tlama yok. &#214;nce buna a&#231;&#305;klma getirmek isterim;

AraMet = AranacakMetin
AraUzn = len(AraMet)

de&#287;erlerimiz tespit edilmi&#351; olsun, c:\resim klas&#246;r&#252;ndeki ilk arauzn harfi AraMet ile ba&#351;layan jpg uzant&#305;l&#305; dosya ka&#231; adettir?
Sorumuz budur.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Sizin kodlarınız içinde yaptığım revizyonda aşağıdaki gibi çalışıyor,
Sayın haluk'un yöntemindeki reviyon ne şekilde olmalı acaba?
Yada şöyle sorayaım dosya sayısı artıkça bu yöntem mi, If MyFile Like araIsm yöntemi mi, kasmaksızın(stabil) çalışır?
mü yoksa
Kod:
Sub TestKlsSay_rakkas()
Dim MyPath, MyFile, AraMet, isim As String, AraUzn%
Dim adt As Integer
    MyPath = "C:\Resim"
    MyFile = Dir(MyPath & "\*.jpg", vbDirectory)
    AraMet = "[vtmahbirimler.xls-ilveilce]_[E8_H21]"
    AraUzn = Len(AraMet)
    Do While MyFile <> ""
' ifadenizde ilk 3 harften bahsediyorsanız eğer ,aşagıdaki kod'uda kullanabilirsiniz
       If Left(MyFile, AraUzn) = AraMet Then
            adt = adt + 1
isim = MyFile & vbCrLf & isim
        End If
        MyFile = Dir
    Loop
    MsgBox "Bulunan dosya sayısı : " & adt & " adet"
MsgBox "Bulunan dosya isimler: " & vbCrLf & isim & vbCrLf
End Sub
 

Kemal Demir

Özel Üye
Katılım
29 Temmuz 2004
Mesajlar
2,108
Esenlikler
excel vba ile bir klas&#246;r&#252;n i&#231;inde "abc" ile ba&#351;layan jpg uzant&#305;l&#305; dosyalar&#305;n say&#305;s&#305;n&#305; nas&#305;l tespit edebiliriz?

klsr =c:\resim
bas = "abc"
son = ".jpg"
Ara = ???
adt = Ara.????
&#304;lk mesaj&#305;n&#305;z da "abc" ile ba&#351;layan dedi&#287;iniz i&#231;in ben &#246;yle d&#252;&#351;&#252;nd&#252;m.Aksi bir durumda Haluk Bey'in kodu yeterlidir.
 

Korhan Ayhan

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

Kodu a&#351;a&#287;&#305;daki &#351;ekilde de&#287;i&#351;tirip denermisiniz.

Kod:
Sub TestKlsSay()
Dim MyPath, MyFile As String
Dim araIsm As String
Dim adt As Integer
    MyPath = "C:\Resim"
    araIsm = "[vtmahbirimler.xls-ilveilce]_[E8_H21]"
    araIsm = Replace(Replace(araIsm, "[", "("), "]", ")")
    MyFile = Dir(MyPath & "\*.jpg", vbDirectory)
    Do While MyFile <> ""
        If Replace(Replace(MyFile, "[", "("), "]", ")") Like "*" & araIsm & "*" Then
            adt = adt + 1
        End If
        MyFile = Dir
    Loop
    MsgBox "Bulunan dosya say&#305;s&#305; : " & adt & " adet"
End Sub
 

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
da... o kodda "[" ve "]" karekterlerini be&#287;enmiyor :(
&#350;imdi be&#287;enir art&#305;k.... :mrgreen:

Kod:
Sub Test2()
    MyPath = "C:\Resim"
    MyFile = Dir(MyPath & "\*.jpg", vbDirectory)
    Do While MyFile <> ""
        If MyFile Like "[[]vtmahbirimler.xls-ilveilce[]]_[[]E8_H21[]]*" Then
            adt = adt + 1
        End If
        MyFile = Dir
    Loop
    MsgBox "Bulunan dosya say&#305;s&#305; : " & adt & " adet"
End Sub
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Korhan hocam anla&#351;&#305;lan k&#246;&#351;eli paranteleri kabul ettirmenin yolu yok, neyse
(vtmahbirimler.xls-ilveilce)_(E8_H21)_004.jpg
[vtmahbirimler.xls-ilveilce]_[E8_H21]_004.jpg

aras&#305;nda fark etmiyor &#231;&#252;nk&#252;, neyse buna da raz&#305; olaca&#287;&#305;z art&#305;k. &#199;ok te&#351;ekk&#252;r ederim.

&#304;lave olarak &#350;&#246;yle bir &#351;ey sorsam;
Bulunan dosyalar&#305;n listesini aktif &#231;al&#305;&#351;ma sayfas&#305;n&#305;n a1 h&#252;cresinden itibaren yaz nas&#305;l derim?
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Haluk hocam alakan&#305;za te&#351;ekk&#252;r ederim;

Kod:
Sub TestKlsSay_Haluk()
Dim MyPath, MyFile As String
Dim araIsm As String
Dim adt As Integer
    araIsm = "[[]vtmahbirimler.xls-ilveilce[]]_[[]E8_H21[]]"
    araIsm = araIsm & "*" 'araIsm  ile ba&#351;layanlar
  '  araIsm = "[vtmahbirimler.xls-ilveilce]_[E8_H21]*"
  '  araIsm = Replace(Replace(araIsm, "[", "["), "]", "]")
    MyPath = "C:\Resim"
    MyFile = Dir(MyPath & "\*.jpg", vbDirectory)
    Do While MyFile <> ""
        If MyFile Like araIsm Then
            adt = adt + 1
        End If
        MyFile = Dir
    Loop
    MsgBox "Bulunan dosya say&#305;s&#305; : " & adt & " adet"
End Sub
kod dizesinde prosod&#252;r i&#351;lerken [vtmahbirimler.xls-ilveilce]_[E8_H21] haline gelen metin ile ba&#351;layanlar&#305;n listesini &#246;&#287;renip sonuna saya&#231;nosu eklemek amac&#305;m. dolay&#305;s&#305; ile "[[]vtmahbirimler.xls-ilveilce[]]_[[]E8_H21[]]" haline kendili&#287;inden d&#246;n&#252;&#351;t&#252;rmem gerekiyor ancak replacelala denedim tutturamad&#305;m.
Tekrar yard&#305;m ederseniz sevinirim.
 
Son düzenleme:
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
&#246;z&#252;r dilerim hata ile d&#246;mn&#252;&#351;t&#252;rmemem yazm&#305;&#351;&#305;m, do&#287;rusu d&#246;n&#252;&#351;t&#252;rmem olacakt&#305;r.
 

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
Neden bahsetti&#287;inizi anlam&#305;yorum, d&#246;n&#252;&#351;t&#252;r&#252;len falan bir&#351;ey yok. Zaten herhangibir &#351;eyi de d&#246;n&#252;&#351;termeye gerek yok.......

&#214;nerdi&#287;im kodu &#231;al&#305;&#351;t&#305;r&#305;nca, [vtmahbirimler.xls-ilveilce]_[E8_H21]_004.jpg gibi dosyalardan ka&#231; tane oldu&#287;unu &#246;&#287;reniyorsunuz.

Bu de&#287;il mi sizin sordu&#287;unuz ?????????


.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
&#351;&#246;yle izah edeyim hocam;

Kod:
Sub subhsr_Selection_ScreenShot()
'#########################################################################################################'
'#########         Aktif &#199;al&#305;&#351;ma Sayfas&#305;nda se&#231;ili olan h&#252;creleri ve &#252;zerindeki                  #########'
'#########         grafik, resim vs. &#351;ekillerin resmini &#231;ekip c:\resim alt&#305;na                    #########'
'#########         kaydeder.                                                                     #########'
'#########         [URL="http://www.Excel.web.tr"]www.Excel.web.tr[/URL] den Anemos ve Seyit Diken 'in katk&#305;lar&#305;yla                   #########'
'#########         hsayar taraf&#305;ndan haz&#305;rlanm&#305;&#351;t&#305;r.                                             #########'
'#########################################################################################################'
1 Dim DsSisKnt, Pic, graf, Dosyalar, dosya, ws, wb As Object
2 Dim KytKls$, uznKls$, KytDAd$, uznDAd$, ara$, sycDno&#37;, Arlk
3 Set DsSisKnt = CreateObject("Scripting.FileSystemObject")
4 Set ws = Selection.Parent:         Set wb = ws.Parent
5 On Error GoTo hata
'\  Se&#231;ili Alan&#305;n resmini &#231;eker;
6 Selection.CopyPicture Appearance:=xlScreen, Format:=xlPicture: GoTo islem
7 hata:
8    MsgBox "Birle&#351;ik aral&#305;kta bir se&#231;im yapmal&#305;s&#305;n&#305;z": GoTo Son
9 islem:
'**\     &#199;ekilen resmi pic de&#287;i&#351;kenine atayarak yap&#305;&#351;t&#305;r, sayfadan siler.
10        Set Pic = ActiveSheet.Pictures.Paste
11        With Pic
12      '      .Copy
13            .Delete
14        End With
15        Set Pic = Nothing
'**\     Resmin kaydedilece&#287;i klas&#246;r ve dosya ad&#305; ve uzunluk bilgileri haz&#305;rlan&#305;r.
16        KytKls = "C:\Resim\":           Call SubHsr_Klsr_Yks_Olstr(KytKls)
17        uznKls = Len(KytKls)
171       Arlk = "[" & Replace(Replace(Selection.address, ":", "_", 1), "$", "", 1) & "]_"
18        [COLOR=red][B]KytDAd = "[" & wb.Name & "-" & ws.Name & "]_" & Arlk[/B][/COLOR]
           uznDAd = Len(KytDAd)
'**\    Dizindeki Dosya Adlar&#305;n&#305; Kaydedilecek Dosya Ad&#305; ile kar&#351;&#305;la&#351;t&#305;r...
19        Set Dosyalar = DsSisKnt.GetFolder(KytKls).Files
20        For Each dosya In Dosyalar
21            ara = Mid$(KytKls & KytDAd, uznKls + 1, uznDAd)
22            If ara = KytDAd Then sycDno = sycDno + 1
23        Next
24        Set Dosyalar = Nothing:                 Set dosya = Nothing
'**\    &#199;ekilen Resmi, jpg olarak kaydet
25        Set graf = ActiveSheet.ChartObjects.Add(1, 1, Selection.Width + 2, Selection.Height + 2).Chart
251       KytDAd = KytKls & KytDAd & Format(sycDno + 1, "000") & ".jpg"
26        With graf
27            .Paste
28            .Export KytDAd
29            .Parent.Delete
30        End With
31        Set graf = Nothing
32 Son:
33    Set DsSisKnt = Nothing
34    Set ws = Nothing
End Sub
18. sat&#305;ra geldi&#287;inda kaydedilecek dosyan&#305;n ad&#305; olu&#351;mu&#351; oluyor yani [vtmahbirimler.xls-ilveilce]_[E8_H21]_ haline geliyor. buradan sonra ba&#351;&#305; bu halde olan hi&#231; dosya yoksa [vtmahbirimler.xls-ilveilce]_[E8_H21]_001 olarak kaydetmesini istiyorum. vtmahbirimler.xls-ilveilce]_[E8_H21]_ ile ba&#351;layan 5 dosya varsa [vtmahbirimler.xls-ilveilce]_[E8_H21]_006 olarak kaydetmesini istiyorum.

19 ila 23. sat&#305;rlar aras&#305;nda yapt&#305;&#287;&#305;m denemede KytDAd ile ba&#351;layanlar&#305; de&#287;il,resimdende g&#246;r&#252;lece&#287;i &#252;zere dizindeki dosya say&#305;s&#305;na g&#246;re sayac&#305; art&#305;r&#305;yor.



bu nedenle ben &#231;ekilen resmin abc001,abc002 ile giderken alan de&#287;i&#351;ince bcd001, bcd002 gibi gitmesini istiyorum.

Sayg&#305;lar&#305;mla.


Kod:
[LEFT]Sub TestKlsSay_Haluk()
Dim MyPath, MyFile As String
Dim araIsm As String
Dim adt As Integer
   araIsm = "[[]vtmahbirimler.xls-ilveilce[]]_[[]E8_H21[]]"
   araIsm = araIsm & "*" 'araIsm  ile ba&#351;layanlar
 '  araIsm = "[vtmahbirimler.xls-ilveilce]_[E8_H21]*"
 '  araIsm = Replace(Replace(araIsm, "[", "["), "]", "]")
   MyPath = "C:\Resim"
   MyFile = Dir(MyPath & "\*.jpg", vbDirectory)
   Do While MyFile <> ""
       If MyFile Like araIsm Then
           adt = adt + 1
       End If
       MyFile = Dir
   Loop
   MsgBox "Bulunan dosya say&#305;s&#305; : " & adt & " adet"
End Sub[/LEFT]
Yani sizin kodlar&#305;n&#305;zdaki AraIsm de&#287;i&#351;keni benim KytDAd de&#287;i&#351;kenine e&#351;it olacak ve arama yap&#305;lacakt&#305;r.
 

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
&#214;nerdi&#287;im kodu fonksiyon haline getirip, sizin kodun i&#231;inden &#231;a&#287;&#305;rd&#305;m....

.

Kod:
Sub subhsr_Selection_ScreenShot_R()
'#########################################################################################################'
'#########         Aktif &#199;al&#305;&#351;ma Sayfas&#305;nda se&#231;ili olan h&#252;creleri ve &#252;zerindeki                  #########'
'#########         grafik, resim vs. &#351;ekillerin resmini &#231;ekip c:\resim alt&#305;na                    #########'
'#########         kaydeder.                                                                     #########'
'#########         www.Excel.web.tr den Anemos ve Seyit Diken 'in katk&#305;lar&#305;yla                   #########'
'#########         hsayar taraf&#305;ndan haz&#305;rlanm&#305;&#351;t&#305;r.                                             #########'
'#########################################################################################################'
1 Dim DsSisKnt, Pic, graf, Dosyalar, dosya, ws, wb As Object
2 Dim KytKls$, uznKls$, KytDAd$, uznDAd$, ara$, sycDno&#37;, Arlk
3 Set DsSisKnt = CreateObject("Scripting.FileSystemObject")
4 Set ws = Selection.Parent:         Set wb = ws.Parent
5 On Error GoTo hata
'\  Se&#231;ili Alan&#305;n resmini &#231;eker;
6 Selection.CopyPicture Appearance:=xlScreen, Format:=xlPicture: GoTo islem
7 hata:
8    MsgBox "Birle&#351;ik aral&#305;kta bir se&#231;im yapmal&#305;s&#305;n&#305;z": GoTo Son
9 islem:
'**\     &#199;ekilen resmi pic de&#287;i&#351;kenine atayarak yap&#305;&#351;t&#305;r, sayfadan siler.
10        Set Pic = ActiveSheet.Pictures.Paste
11        With Pic
12      '      .Copy
13            .Delete
14        End With
15        Set Pic = Nothing
'**\     Resmin kaydedilece&#287;i klas&#246;r ve dosya ad&#305; ve uzunluk bilgileri haz&#305;rlan&#305;r.
16        KytKls = "C:\Resim\":           'Call SubHsr_Klsr_Yks_Olstr(KytKls)
17        uznKls = Len(KytKls)
171       Arlk = "[" & Replace(Replace(Selection.Address, ":", "_", 1), "$", "", 1) & "]_"
18        KytDAd = "[" & wb.Name & "-" & ws.Name & "]_" & Arlk
           uznDAd = Len(KytDAd)
'**\    Dizindeki Dosya Adlar&#305;n&#305; Kaydedilecek Dosya Ad&#305; ile kar&#351;&#305;la&#351;t&#305;r...
'19        Set Dosyalar = DsSisKnt.GetFolder(KytKls).Files
'20        For Each dosya In Dosyalar
'21            ara = Mid$(KytKls & KytDAd, uznKls + 1, uznDAd)
'22            If ara = KytDAd Then sycDno = sycDno + 1
'23        Next
          sycDno = GetLast(KytKls & KytDAd)
24        Set Dosyalar = Nothing:                 Set dosya = Nothing
'**\    &#199;ekilen Resmi, jpg olarak kaydet
25        Set graf = ActiveSheet.ChartObjects.Add(1, 1, Selection.Width + 2, Selection.Height + 2).Chart
251       KytDAd = KytKls & KytDAd & Format(sycDno + 1, "000") & ".jpg"
26        With graf
27            .Paste
28            .Export KytDAd
29            .Parent.Delete
30        End With
31        Set graf = Nothing
32 Son:
33    Set DsSisKnt = Nothing
34    Set ws = Nothing
End Sub
'
Function GetLast(MyPath As String) As Long
    Dim adt As Long
    MyFile = Dir(MyPath & "*.jpg", vbDirectory)
    Do While MyFile <> ""
        If MyFile Like "[[]" & ThisWorkbook.Name & "-" & ActiveSheet.Name & "[]]_[[]" & Replace(Selection.Address(False, False), ":", "_") & "[]]*" Then
            adt = adt + 1
        End If
        MyFile = Dir
    Loop
    GetLast = adt
End Function
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
ellerinize sa&#287;l&#305;k hocam istedi&#287;im buydu sadece ThisWorkbook tan de&#287;il ActiveWorkbook Kullanamk zorunday&#305;m onu de&#287;i&#351;tirdim.
 
Üst