Dim Kaynak As String
Dim sut As String
Dim Sayfa_Adı As String
Sub Start()
'D sürücüsünde ve belgelerim klasörüne birleştirilecek dosyaları bir klasör içinde topla ve makroyu başlat
a = MsgBox("Sayfayı Temizlemek istiyormusunuz.?", vbYesNo + vbInformation, " UYARI")
If a = vbYes Then
Range(Cells(2, 1), Cells(Rows.Count, Columns.Count)).Value = ""
Range(Cells(2, 1), Cells(Rows.Count, Columns.Count)).Interior.ColorIndex = xlNone
End If
Sayfa_Adı = ActiveSheet.Name
sut = 2
Set Klasor = CreateObject("shell.application").BrowseForFolder(0, "Lütfen bir klasör seçiniz", 50, &H0)
If Not Klasor Is Nothing Then
Kaynak = Klasor.SELF.Path
If InStr(1, Kaynak, "{") > 0 Then GoTo Atla
Call Liste(Kaynak, "")
Call AltListe(Kaynak, "")
Range("A1").Select
MsgBox "işlem tamam"
Else
Atla:
MsgBox "Lütfen Kaynak Klasör Seçimini Yapınız !", vbInformation, "DİKKAT"
End If
Set Klasor = Nothing
End Sub
Private Sub Liste(Klasor As String, uzanti As String)
Dim Hedef As Object, Kaynak As Object, Dosya As String
Set Hedef = CreateObject("Scripting.FileSystemObject").GetFolder(Klasor).SubFolders
Dim wb As Workbook
Dim DosyaSistemi
Set DosyaSistemi = CreateObject("Scripting.FileSystemObject")
Dosya = Dir(Klasor & "\*.csv" & uzanti)
Application.ScreenUpdating = False
While Dosya <> ""
DoEvents
Application.DisplayAlerts = False
If ThisWorkbook.Name <> Dosya Then
On Error Resume Next
eski = Klasor & "\" & Dosya
yeni = Klasor & "\" & Mid(Dosya, 1, Len(Dosya) - 4) & ".xls"
FileCopy eski, yeni
DosyaSistemi.DeleteFile eski
End If
Dosya = Dir
Wend
On Error GoTo sonraki
For Each Kaynak In Hedef
Call Liste(Kaynak.Path, "")
sonraki:
Next
Set Hedef = Nothing
End Sub
Private Sub AltListe(Klasor As String, uzanti As String)
Dim Hedef As Object, Kaynak As Object, Dosya As String
Set Hedef = CreateObject("Scripting.FileSystemObject").GetFolder(Klasor).SubFolders
Dim wb As Workbook
If sut + satır >= Rows.Count Then
Sheets.Add
Sheets(ActiveSheet.Name).Move After:=Sheets(ActiveWorkbook.Sheets.Count)
Sayfa_Adı = ActiveSheet.Name
sut = 2
End If
n = 1
For s = 1 To satır
For j = 1 To 4
ThisWorkbook.Sheets(Sayfa_Adı).Cells(sut, n) = ExecuteExcel4Macro(deg & s & "C" & j)
If ThisWorkbook.Sheets(Sayfa_Adı).Cells(sut, n) = 0 Then
ThisWorkbook.Sheets(Sayfa_Adı).Cells(sut, n) = ""
End If
n = n + 1
Next j
ThisWorkbook.Sheets(Sayfa_Adı).Cells(sut + 1, 1).Select
sut = sut + 1
n = 1
Next s
End If
Dosya = Dir
wb.Close False
Wend
On Error GoTo sonraki
For Each Kaynak In Hedef
Call AltListe(Kaynak.Path, "")
sonraki:
Next
Set Hedef = Nothing
End Sub
burdaki kodu 4ü 7 olarak değiştirdiğimde 7 sütundan oluşan csv dosyalarının başlıklarını alıyor 5inci sutun dahil olmak uzere verileri getiriyor 6 ve 7 sutunların alt değerlerini getirmiyor.
Sizlere daha iyi bir deneyim sunabilmek icin sitemizde çerez konumlandırmaktayız, web sitemizi kullanmaya devam ettiğinizde çerezler ile toplanan kişisel verileriniz Veri Politikamız / Bilgilendirmelerimizde belirtilen amaçlar ve yöntemlerle mevzuatına uygun olarak kullanılacaktır.