tahsinanarat
Altın Üye
- Katılım
- 14 Mart 2005
- Mesajlar
- 2,181
- Excel Vers. ve Dili
- Ofis 2019 Türkçe
veyisefendi adlı arkadaşımızın isteği üzerine evelce bu siteden temin ettiğim farklı çalışma kitabını bir araya toplayan dosya ektedir.
C:\DOSYALAR klasörü oluşturup aktarmak istediğiniz dosyalarınızı bu klasör altına yerleştirdikten sonra örnek dosyadaki makroyu çalıştırın. Umarım faydası olur.
DOSYA İSİMLERİNİN SAYI VEYA METİN OLABİLİR
A2 DE DİZİN ADI , B2 DEN AŞAĞIYA DOĞRU DİZİNDEKİ DOSYA İSİMLERİNİ YAZMANIZ GEREKİYOR (C:\DOSYALAR gibi)
Sub DİZİNDEKİ_DOSYALARI_AKTAR()
On Error Resume Next
Application.ScreenUpdating = False
Dim AKTARILACAK_DOSYA As Workbook
Dim ANA_DOSYA As Workbook
Dim DOSYA_YOLU As String
Set ANA_DOSYA = ThisWorkbook
Set SAYFA = ANA_DOSYA.Sheets("KRİTER")
Application.DisplayAlerts = False 'Önceki dosyaları siler
While Worksheets.Count > 1
Sheets(2).Delete
Wend
Application.DisplayAlerts = True
SAYFA.Select
DOSYA_YOLU = [A2]
If [A2] = "" Then
MsgBox "Lütfen dizin adını giriniz !", vbCritical, "Dikkat !"
[A2].Select
Exit Sub: End If
If WorksheetFunction.CountA([B:B]) = 1 Then
MsgBox "Lütfen dosya adı giriniz !", vbCritical, "Dikkat !"
[C2].Select
Exit Sub: End If
For X = ANA_DOSYA.Sheets.Count To 2 Step -1
Application.DisplayAlerts = False
Sheets(X).Delete
Application.DisplayAlerts = True
Next
If CreateObject("Scripting.FileSystemObject").GetFolder(DOSYA_YOLU).Files.Count = 0 Then GoTo Son
For X = 2 To [B65536].End(3).Row
DOSYA_VARMI = Dir(DOSYA_YOLU & "\" & SAYFA.Cells(X, 2) & ".xls")
If DOSYA_VARMI <> "" Then
Workbooks.Open (DOSYA_YOLU & "\" & SAYFA.Cells(X, 2) & ".xls")
Set AKTARILACAK_DOSYA = ActiveWorkbook
AKTARILACAK_DOSYA.Sheets(1).Copy After:=ANA_DOSYA.Sheets(ANA_DOSYA.Sheets.Count)
ActiveSheet.Name = AKTARILACAK_DOSYA.Name
AKTARILACAK_DOSYA.Close False
Set AKTARILACAK_DOSYA = Nothing
End If
Next
SAYFA.Select
[A1].Select
Set ANA_DOSYA = Nothing
Set SAYFA = Nothing
Application.ScreenUpdating = True
MsgBox "Veriler aktarılmıştır.", vbInformation
Exit Sub
Son:
[A1].Select
Set ANA_DOSYA = Nothing
Set SAYFA = Nothing
Application.ScreenUpdating = True
MsgBox "Veri aktarılacak dosya bulunamamıştır !", vbExclamation, "Dikkat !"
End Sub
C:\DOSYALAR klasörü oluşturup aktarmak istediğiniz dosyalarınızı bu klasör altına yerleştirdikten sonra örnek dosyadaki makroyu çalıştırın. Umarım faydası olur.
DOSYA İSİMLERİNİN SAYI VEYA METİN OLABİLİR
A2 DE DİZİN ADI , B2 DEN AŞAĞIYA DOĞRU DİZİNDEKİ DOSYA İSİMLERİNİ YAZMANIZ GEREKİYOR (C:\DOSYALAR gibi)
Sub DİZİNDEKİ_DOSYALARI_AKTAR()
On Error Resume Next
Application.ScreenUpdating = False
Dim AKTARILACAK_DOSYA As Workbook
Dim ANA_DOSYA As Workbook
Dim DOSYA_YOLU As String
Set ANA_DOSYA = ThisWorkbook
Set SAYFA = ANA_DOSYA.Sheets("KRİTER")
Application.DisplayAlerts = False 'Önceki dosyaları siler
While Worksheets.Count > 1
Sheets(2).Delete
Wend
Application.DisplayAlerts = True
SAYFA.Select
DOSYA_YOLU = [A2]
If [A2] = "" Then
MsgBox "Lütfen dizin adını giriniz !", vbCritical, "Dikkat !"
[A2].Select
Exit Sub: End If
If WorksheetFunction.CountA([B:B]) = 1 Then
MsgBox "Lütfen dosya adı giriniz !", vbCritical, "Dikkat !"
[C2].Select
Exit Sub: End If
For X = ANA_DOSYA.Sheets.Count To 2 Step -1
Application.DisplayAlerts = False
Sheets(X).Delete
Application.DisplayAlerts = True
Next
If CreateObject("Scripting.FileSystemObject").GetFolder(DOSYA_YOLU).Files.Count = 0 Then GoTo Son
For X = 2 To [B65536].End(3).Row
DOSYA_VARMI = Dir(DOSYA_YOLU & "\" & SAYFA.Cells(X, 2) & ".xls")
If DOSYA_VARMI <> "" Then
Workbooks.Open (DOSYA_YOLU & "\" & SAYFA.Cells(X, 2) & ".xls")
Set AKTARILACAK_DOSYA = ActiveWorkbook
AKTARILACAK_DOSYA.Sheets(1).Copy After:=ANA_DOSYA.Sheets(ANA_DOSYA.Sheets.Count)
ActiveSheet.Name = AKTARILACAK_DOSYA.Name
AKTARILACAK_DOSYA.Close False
Set AKTARILACAK_DOSYA = Nothing
End If
Next
SAYFA.Select
[A1].Select
Set ANA_DOSYA = Nothing
Set SAYFA = Nothing
Application.ScreenUpdating = True
MsgBox "Veriler aktarılmıştır.", vbInformation
Exit Sub
Son:
[A1].Select
Set ANA_DOSYA = Nothing
Set SAYFA = Nothing
Application.ScreenUpdating = True
MsgBox "Veri aktarılacak dosya bulunamamıştır !", vbExclamation, "Dikkat !"
End Sub
