• DİKKAT

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

Soru İki tarih arasındaki dosyaları kopyalamak

  • Konbuyu başlatan Konbuyu başlatan k0081
  • Başlangıç tarihi Başlangıç tarihi
Katılım
17 Haziran 2008
Mesajlar
1,874
Excel Vers. ve Dili
Microsoft Ofis Profesyonel 2019 x64 TR
Merhaba arkadaşlar;

örnek klasörde dosyalarım mevcut. alttaki kod ile kopyalama yapıyorum. Ancak istenen filtreleme ile kopyalama yapmıyor?. Tamamını kopyalıyor...

yardımcı arkadaşa şimdiden teşekkürler.

* bat dosyasıda çözüm olabilir...

C#:
Sub Dosya_kopyala()
    Dim ds, dc, f, s
    Yol = "D:\10_03_2023"
    Set ds = CreateObject("Scripting.FileSystemObject")
    Set f = ds.GetFolder(Yol)
    Set dc = f.Files
    For Each dosya In dc
        If dosya.Name Like "*_01_2023*" And dosya.Name Like "*_02_2023*" Then GoTo 10
        ds.CopyFile Yol & "\" & dosya.Name, Yol & "\yedek\"
10
    Next
MsgBox "Kopyalama İşlemi Bitti"
End Sub
 
Son düzenleme:
Merhaba, deneyiniz.

Kod:
Sub Dosya_kopyala()
    Dim ds, dc, f, s
    Yol = "D:\10_03_2023"
    Set ds = CreateObject("Scripting.FileSystemObject")
    Set f = ds.GetFolder(Yol)
    Set dc = f.Files
    For Each dosya In dc
        If dosya.Name Like "*_01_2023*" Or dosya.Name Like "*_02_2023*" Then
            ds.CopyFile Yol & "\" & dosya.Name, Yol & "\yedek\"
        End If
    Next
    MsgBox "Kopyalama İşlemi Bitti"
End Sub

*Dosya yoksa işleme devam etmez.

Kod:
Sub Dosya_kopyala()
    Dim ds, dc, f, s
    Yol = "D:\10_03_2023"
    Set ds = CreateObject("Scripting.FileSystemObject")
    Set f = ds.GetFolder(Yol)
    Set dc = f.Files
    Dim dosyaAdi As String
    For Each dosya In dc
        dosyaAdi = dosya.Name
        If InStr(1, dosyaAdi, "_01_2023") > 0 Or InStr(1, dosyaAdi, "_02_2023") > 0 Then
            ds.CopyFile Yol & "\" & dosyaAdi, Yol & "\yedek\"
        End If
    Next
    MsgBox "Kopyalama İşlemi Bitti"
End Sub
 
Cevap için çok teşekkürler.

1 ve 2 ay olduğunda kod düzgün çalışıyor...

Ancak 2. ayı 3 yaptığımızda ; sadece 1 ve 3. aydakileri kopyalıyor. istediğim : 3 ay ve geriye doğru 1. ay a kadar olanları kopyalasın.

Kodu 3. aya göre düzenledim.

1 ve 3 aylar tamam. Ama 2 . ay lar yok . :(





Kod:
Sub Dosya_kopyala()
    Dim ds, dc, f, s
    Yol = "D:\10_03_2023"
    Set ds = CreateObject("Scripting.FileSystemObject")
    Set f = ds.GetFolder(Yol)
    Set dc = f.Files
    For Each dosya In dc
        If dosya.Name Like "*_01_2023*" Or dosya.Name Like "*_03_2023*" Then
            ds.CopyFile Yol & "\" & dosya.Name, Yol & "\yedek\"
        End If
    Next
    MsgBox "Kopyalama İşlemi Bitti"
End Sub
 
Edit,
Kod bloğu hatalı.
 
Son düzenleme:
Hocam tarih biçimleri sizin yapmış olduğunuz slaş ile ayrılmış şekilde değil...

başlangıç tarihi formatı ( aynı zamanda dosya adıdır...) = *_01_2023*
bitiş tarihi formatı ( aynı zamanda dosya adıdır...) = *_03_2023*


bu biçime göre olmalıdır. Dosyanın öznitelik tarihinden gidemeyiz maalesef...



Kod:
Tarih1 = InputBox("Kopyalanacak dosyaların başlangıç tarihini girin (GG/AA/YYYY)")
Tarih2 = InputBox("Kopyalanacak dosyaların bitiş tarihini girin (GG/AA/YYYY)")
 
Hocam tarih biçimleri sizin yapmış olduğunuz slaş ile ayrılmış şekilde değil...

başlangıç tarihi formatı ( aynı zamanda dosya adıdır...) = *_01_2023*
bitiş tarihi formatı ( aynı zamanda dosya adıdır...) = *_03_2023*


bu biçime göre olmalıdır. Dosyanın öznitelik tarihinden gidemeyiz maalesef...



Kod:
Tarih1 = InputBox("Kopyalanacak dosyaların başlangıç tarihini girin (GG/AA/YYYY)")
Tarih2 = InputBox("Kopyalanacak dosyaların bitiş tarihini girin (GG/AA/YYYY)")

4. mesajdakini tekrar deneyiniz.
 
Bu satırda hata veriyor.

Kod:
        DosyaTarihi = DateSerial(Mid(dosya.Name, 8, 4), Mid(dosya.Name, 6, 2), Mid(dosya.Name, 4, 2))
 
Geri
Üst