Dear Be-Excel,
Sehubungan dengan pertanyaan dari seorang member dari negara antah berantah 
mengenai hal tersebut diatas yang mirip dengan masalah yang pernah saya 
sampaikan sebelumnya....saya mencoba merevisi file sebelumnya (Master) sehingga 
menjadi lebih mudah.
Pertanyaannya adalah sebagai berikut (terjemahan bebas):Saya mempunyai beberapa 
file dalam dua directory tapi mempunyai nama2 yang sama, mis- Dir 1, file 
1,2,3- Dir 2, file 1,2,3Saya ingin mencopy isi file2 tersebut.

Pertanyaan tersebut saya coba kembangkan menjadi:"Saya ingin mengcopy isi 
beberapa file yang berada dalam beberapa directory dan masing2 file mempunyai 
beberapa sheet yang tidak sama.
Setelah Macronya dibuat, hanya perlu 3 langkah untuk melaksanakannya :- Buka 
blank Workbook yang mempunyai peling sedikit 2 Sheet- Tulis nama2 folder atau 
sub folder pada Sheet2 Range A1, dstnya  (dalam contoh di atas Range A1 diisi 
dengan D1 dan Range A2 diisi dengan D2)- Copas dan jalankan macro di bawah ini 
pada Sheet1 (macro harus aktif),
Option Explicit

Sub ReadAndMergeData()

    ' ERROR CATCHING
    On Error GoTo ErrHandler
    
    ' FREEZE SCREEN
    Application.ScreenUpdating = False
    
    ' CLEAR ALL DATA
    Cells.Clear
    
    ' OUR FILE SYSTEM OBJECTS AND VARIABLES
    Dim objFs As Object
    Dim objFolder As Object
    Dim file As Object
    Dim dst As Workbook
    Dim src As Workbook
    Dim wks As Worksheet
    Dim i As Integer
    Dim mynextrow As Integer
    
    ' THE DESTINATION WORKBOOK AND STARTED ROW
    Set dst = ThisWorkbook
    mynextrow = 1
        
    ' SET FILESYSTEMOBJECT
    Set objFs = CreateObject("Scripting.FileSystemObject")
    
    ' LOOP THROUGH ALL THE PATHS OF THE SOURCE FOLDER
    For i = 1 To WorksheetFunction.CountA(Sheet2.Columns("A:A"))
    Set objFolder = objFs.GetFolder(Sheet2.Range("A" & i).Value)
    
    ' LOOP THROUGH ALL THE WORKBOOKS AND WORKSHEETS IN THE SOURCE FOLDER
    For Each file In objFolder.Files
            
        ' THE SOURCE WORKBOOK
        Set src = Workbooks.Open(file.Path, True, True)
         
        For Each wks In src.Worksheets
            dst.Sheets("sheet1").Cells(mynextrow, 1).Value = file & " (" & 
wks.Name & ")"
            dst.Sheets("sheet1").Cells(mynextrow, 1).Font.Bold = True
            wks.UsedRange.Copy
            dst.Sheets("sheet1").Cells(mynextrow + 1, 1).PasteSpecial 
Paste:=xlPasteValues
            mynextrow = dst.Sheets("sheet1").UsedRange.Rows.Count + 2
        Next wks
    
        ' CLOSE SOURCE WORKBOOK AND SET TO NOTHING
        src.Close False
        Set src = Nothing
       
    Next file
    
    Next i
    
ErrHandler:
    Application.EnableEvents = True
    Application.ScreenUpdating = True

End Sub

Semoga bermanfaat.
Salam,HK
  • [belajar-excel... hendrik karnadi hendrikkarn...@yahoo.com [belajar-excel]
    • [belajar-... Fajar Fatahillah fajar.fatahil...@yahoo.com [belajar-excel]
      • Re: [... nangagus nanga...@gmail.com [belajar-excel]
        • R... 'Mr. Kid' mr.nm...@gmail.com [belajar-excel]

Kirim email ke