- Katılım
- 31 Ağustos 2004
- Mesajlar
- 146
- Excel Vers. ve Dili
- iş:Office 2003 Tr/office 2016trk
ev:office 2021 tr/office 365trk
İyi akşamlar;
forumda benzer örneklerini bulmama rağmen kendi örneğime bir türlü uyduramadım.
Ekteki dosyadaki gibi bir klasörde 3253 adet dosyam mevcut.
Örneğin a1 a9 arasındaki dosya isimleri MT_ACIBD 2010 3 aylik dosyasına toplamak istiyorum ama dosyalardaki tarih isimlerine göre.
Yani önce MT_ACIBD 2010 3 aylik dosya açılıp
A sütünuna bir kolon eklenece sonra 6 aylık dosyasından a
kolonları seçilip eklenen kolona yapıştırılacak ve tekrar A sütünuna kolon eklenip 9 aylık dan a
kolonları seçilip eklenen kolona yapıştırılacak.
MT_ACIBD 2010 6 aylik
MT_ACIBD 2010 9 aylik
MT_ACIBD 2010 12 aylik
MT_ACIBD 2011 3 aylik
MT_ACIBD 2011 6 aylik
MT_ACIBD 2011 9 aylik
MT_ACIBD 2011 12 aylik
MT_ACIBD 2012 3 aylik
bazı dosyalar 9 değil 4 tane
bir türlü mantık kuramadım malesef.
vakti bulup bakabilen olabilir belki diye foruma yazdım.
aşağıdaki kodları bulmuştum ama olmadı malesef.
Option Explicit
Sub dosyaları_birlestir()
Dim fso As Object, f As Object, dosya As String, fls As Object
Dim sonsat1 As Long, sonsat2 As Long, sh As Worksheet, liste()
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.getfolder(ThisWorkbook.Path & "\DOSYALAR").Files
ThisWorkbook.Activate
ThisWorkbook.Sheets("Sheet1").Select
Application.ScreenUpdating = False
Range("A6:F65536").ClearContents
For Each fls In f
Columns("A:A").Select
Selection.Insert Shift:=xlToRight
If fso.GetExtensionName(fls) = "xls" Then
If Workbooks.Open(fls).ReadOnly = True Then Workbooks(fls.Name).Close False
For Each sh In Workbooks(fls.Name).Worksheets
sonsat1 = sh.Cells(65536, "A").End(xlUp).Row
Columns("A:O").Select
Selection.Copy
Next sh
Workbooks(fls.Name).Close False
End If
Columns("A:O").Select
Selection.Insert Shift:=xlToRight
Next fls
ThisWorkbook.Activate
ThisWorkbook.Sheets("Sheet1").Select
Application.ScreenUpdating = True
MsgBox "Diğer dosyalardan veriler aktarıldı." & vbLf & _
"evrengizlen@hotmail.com", vbOKOnly + vbInformation, "T O M S O N"
End Sub
forumda benzer örneklerini bulmama rağmen kendi örneğime bir türlü uyduramadım.
Ekteki dosyadaki gibi bir klasörde 3253 adet dosyam mevcut.
Örneğin a1 a9 arasındaki dosya isimleri MT_ACIBD 2010 3 aylik dosyasına toplamak istiyorum ama dosyalardaki tarih isimlerine göre.
Yani önce MT_ACIBD 2010 3 aylik dosya açılıp
A sütünuna bir kolon eklenece sonra 6 aylık dosyasından a
MT_ACIBD 2010 6 aylik
MT_ACIBD 2010 9 aylik
MT_ACIBD 2010 12 aylik
MT_ACIBD 2011 3 aylik
MT_ACIBD 2011 6 aylik
MT_ACIBD 2011 9 aylik
MT_ACIBD 2011 12 aylik
MT_ACIBD 2012 3 aylik
bazı dosyalar 9 değil 4 tane
bir türlü mantık kuramadım malesef.
vakti bulup bakabilen olabilir belki diye foruma yazdım.
aşağıdaki kodları bulmuştum ama olmadı malesef.
Option Explicit
Sub dosyaları_birlestir()
Dim fso As Object, f As Object, dosya As String, fls As Object
Dim sonsat1 As Long, sonsat2 As Long, sh As Worksheet, liste()
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.getfolder(ThisWorkbook.Path & "\DOSYALAR").Files
ThisWorkbook.Activate
ThisWorkbook.Sheets("Sheet1").Select
Application.ScreenUpdating = False
Range("A6:F65536").ClearContents
For Each fls In f
Columns("A:A").Select
Selection.Insert Shift:=xlToRight
If fso.GetExtensionName(fls) = "xls" Then
If Workbooks.Open(fls).ReadOnly = True Then Workbooks(fls.Name).Close False
For Each sh In Workbooks(fls.Name).Worksheets
sonsat1 = sh.Cells(65536, "A").End(xlUp).Row
Columns("A:O").Select
Selection.Copy
Next sh
Workbooks(fls.Name).Close False
End If
Columns("A:O").Select
Selection.Insert Shift:=xlToRight
Next fls
ThisWorkbook.Activate
ThisWorkbook.Sheets("Sheet1").Select
Application.ScreenUpdating = True
MsgBox "Diğer dosyalardan veriler aktarıldı." & vbLf & _
"evrengizlen@hotmail.com", vbOKOnly + vbInformation, "T O M S O N"
End Sub
