Klasördeki Dosya Sayısına Göre İşlem Yapma Hakkında

VBA Makrolar ile ilgili sormak istedikleriniz, yapmak istedikleriniz hakkında yardım alabileceğiniz bölümdür.

Klasördeki Dosya Sayısına Göre İşlem Yapma Hakkında

İleti#1)  d_artagnan » 09 Ağu 2019 13:14

Kod: Tümünü seç
Sub ik()
Dim i As Integer
Dim ds, dc, f, s
Set ds = CreateObject("Scripting.FileSystemObject")
Set f = ds.GetFolder("C:\Users\asd\Desktop\Mesai\Gelenler")
Set dc = f.Files
s = dc.Count
Sheets("Takvim").Range("P14") = s

For s = 1 To 10
If s = 1 Then
Workbooks.Open Filename:="C:\Users\asd\Desktop\Mesai\Gelenler\1.xlsx"
Sheets("HAFTA İÇİ (2)").Range("B7:BD7").Copy Workbooks("v1").Sheets("HAFTA İÇİ (2)").Range("B7:BD7")
Sheets("HAFTA SONU (2)").Range("B7:BD7").Copy Workbooks("v1").Sheets("HAFTA SONU (2)").Range("B7:BD7")
Workbooks("1.xlsx").Close SaveChanges:=True
Application.DisplayAlerts = False
ElseIf s = 2 Then
Workbooks.Open Filename:="C:\Users\asd\Desktop\Mesai\Gelenler\2.xlsx"
Sheets("HAFTA İÇİ (2)").Range("B7:BD7").Copy Workbooks("v1").Sheets("HAFTA İÇİ (2)").Range("B8:BD8")
Sheets("HAFTA SONU (2)").Range("B7:BD7").Copy Workbooks("v1").Sheets("HAFTA SONU (2)").Range("B8:BD8")
Workbooks("2.xlsx").Close SaveChanges:=True
Application.DisplayAlerts = False
ElseIf s = 3 Then
Workbooks.Open Filename:="C:\Users\asd\Desktop\Mesai\Gelenler\3.xlsx"
Sheets("HAFTA İÇİ (2)").Range("B7:BD7").Copy Workbooks("v1").Sheets("HAFTA İÇİ (2)").Range("B9:BD9")
Sheets("HAFTA SONU (2)").Range("B7:BD7").Copy Workbooks("v1").Sheets("HAFTA SONU (2)").Range("B9:BD9")
Workbooks("3.xlsx").Close SaveChanges:=True
Application.DisplayAlerts = False
ElseIf s = 4 Then
Workbooks.Open Filename:="C:\Users\asd\Desktop\Mesai\Gelenler\4.xlsx"
Sheets("HAFTA İÇİ (2)").Range("B7:BD7").Copy Workbooks("v1").Sheets("HAFTA İÇİ (2)").Range("B10:BD10")
Sheets("HAFTA SONU (2)").Range("B7:BD7").Copy Workbooks("v1").Sheets("HAFTA SONU (2)").Range("B10:BD10")
Workbooks("4.xlsx").Close SaveChanges:=True
Application.DisplayAlerts = False
End If

Next s

fname = Worksheets("Takvim").Range("M1").Value
Sheets(Array("HAFTA İÇİ (2)", "HAFTA SONU (2)")).Copy
ActiveWorkbook.SaveAs "C:\Users\asd\Desktop\Mesai\Gönderilecek-İK\" & fname & "-İK" & ".xlsx"
ActiveWorkbook.Close SaveChanges:=True
Application.DisplayAlerts = False
'ActiveWorkbook.Close SaveChanges:=True
'Windows.Application.Quit
End Sub


sunduğum kod ile gelenler klasöründe 4 dosya var ise çalışıyor. Ancak, klasörde 3 dosya var ise hata veriyor. Mesele şu ki , for döngüsünü kuramadım çünkü kapalı dosyaları açmadan istenilen satırı kopyalayıp başka bir sayfaya yapıştıramadım. Yardımlarınız için teşekkürler.
Kullanıcı avatarı
d_artagnan
Yeni Başlamış
 
Kayıt: 30 Nis 2019 08:13
Meslek: uzman
Yaş: 34
İleti: 46
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: ankara

Cevap: Klasördeki Dosya Sayısına Göre İşlem Yapma Hakkında

İleti#2)  Yasin KURT » 09 Ağu 2019 14:32

Benim bir tane klasör ve çalışmam var onu paylaşayım. Klasördeki tüm dosyalara aynı işlemi yaptırmak için kullanıyorum.
İşinize yarayabilir.

Dosyalar yazan klasöre dosyalarınızı ekledikten sonra sablon yazan dosyadaki makroya kodlarınızı ekleyebilirsiniz.
Bu iletideki ekleri görmek için gerekli yetkilere sahip değilsiniz.
yasinkurt06@ gmail.com
Ankara 0506 669 1079
Yasin KURT
Forum Moderatörü
 
Adı Soyadı:Yasin KURT
Kayıt: 08 Arl 2008 00:18
Konum: ANKARA
Yaş: 37
İleti: 3216
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Ankara



Cevap: Klasördeki Dosya Sayısına Göre İşlem Yapma Hakkında

İleti#3)  d_artagnan » 09 Ağu 2019 15:30

cevabınız için teşekkür ederim. Sunduğunuz dosya işe yarar bir dosya ancak benim ihtiyacımı tam anlamıyla karşılamıyor.

Şöyle ki, benim makroyu çalıştırdığım dosyama başka bir klasörde yer alan 1,2,3 isimli dosyalardan veri çekiyorum. Örneğin 1 isimli dosyanın 1.satırından çektiğim veriyi ana dosyanın 1. satırına, 2 isimli dosyanın 1. satırından çektiğim veriyi ana dosyanın 2. satırına, 3 isimli dosyanın 1. satırından çektiğim veriyi ana dosyanın 3. satırına yazdırmam gerekiyor. For loop ile yapılması gerekiyor ancak koşullarını yazamadım.
Kullanıcı avatarı
d_artagnan
Yeni Başlamış
 
Kayıt: 30 Nis 2019 08:13
Meslek: uzman
Yaş: 34
İleti: 46
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: ankara

Cevap: Klasördeki Dosya Sayısına Göre İşlem Yapma Hakkında

İleti#4)  ahmetilhan282 » 09 Ağu 2019 20:43

Umarım olmuştur:
Kod: Tümünü seç
Sub ilk()
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    Dim i As Integer, yol As String, dosyaSayisi  As Integer, ss  As Integer, ds As Object
    yol = "C:\Users\asd\Desktop\Mesai\Gelenler\"
    yol = "C:\Users\Ahmet iLHAN\Desktop\"
    Set ds = CreateObject("Scripting.FileSystemObject")
    dosyaSayisi = ds.GetFolder(yol).Files.Count
    Sheets("Takvim").Range("P14") = ss
    ss = ThisWorkbook.Sheets("HAFTA İÇİ (2)").Cells(Rows.Count, 2).End(xlUp).Row + 1
    For i = 1 To dosyaSayisi
        With Workbooks.Open(yol & i & ".xlsx")
            .Sheets("HAFTA İÇİ (2)").Range("B7:BD7").Copy ThisWorkbook.Sheets("HAFTA İÇİ (2)").Range("B" & ss & ":BD" & ss)
            .Sheets("HAFTA SONU (2)").Range("B7:BD7").Copy ThisWorkbook.Sheets("HAFTA SONU (2)").Range("B" & ss & ":BD" & ss)
            ss = ss + 1
            .Close False
        End With
    Next i

    fname = Worksheets("Takvim").Range("M1").Value
    Sheets(Array("HAFTA İÇİ (2)", "HAFTA SONU (2)")).Copy
    ActiveWorkbook.SaveAs "C:\Users\asd\Desktop\Mesai\Gönderilecek-İK\" & fname & "-İK" & ".xlsx"
    ActiveWorkbook.Close SaveChanges:=True
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    i = Empty: yol = Empty: ss = Empty: Set ds = Nothing: dosyaSayisi = Empty
End Sub
Kullanıcı avatarı
ahmetilhan282
Site Dostu
 
Adı Soyadı:Ahmet İLHAN
Kayıt: 15 Oca 2014 00:04
Konum: Adana
Meslek: Güvenlik
Yaş: 29
İleti: 842
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Mersin

REKLAM
Excel Logo XML Oluşturucu
Logo Object Designer ile Uyarlama

Cevap: Klasördeki Dosya Sayısına Göre İşlem Yapma Hakkında

İleti#5)  d_artagnan » 15 Ağu 2019 08:55

harika olmuş. Elinize sağlık.
Kullanıcı avatarı
d_artagnan
Yeni Başlamış
 
Kayıt: 30 Nis 2019 08:13
Meslek: uzman
Yaş: 34
İleti: 46
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: ankara


Forum Genel Makro Soruları

Online Kullanıcılar

Bu forumu görüntüleyenler: Ali ÖZ, Google Adsense [Bot], Yandex[Bot] ve 1 misafir

Bumerang - Yazarkafe