1 sayfadan 1. sayfa

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

İletiTarih: 09 Ağu 2019 13:14
d_artagnan
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.

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

İletiTarih: 09 Ağu 2019 14:32
Yasin KURT
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.

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

İletiTarih: 09 Ağu 2019 15:30
d_artagnan
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.

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

İletiTarih: 09 Ağu 2019 20:43
ahmetilhan282
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

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

İletiTarih: 15 Ağu 2019 08:55
d_artagnan
harika olmuş. Elinize sağlık.