Sub CopyFile_HistoryScan_GW() Dim sourceFilePaths As Variant Dim destinationFilePath As String Dim destinationWorkbook As Workbook Dim sourceWorkbook As Workbook Dim sourceWorksheet As Worksheet Dim destinationWorksheet As Worksheet Dim fs As Object
Dim i As Integer
' Tentukan path file sumber
sourceFilePaths = Array("D:\JOB DAILY\DATA\COPY\SMPSRG1.xlsx", _ "D:\JOB DAILY\DATA\COPY\SMPSRG2.xlsx", _
"D:\JOB DAILY\DATA\COPY\SMPPTI.xlsx", _ "D:\JOB DAILY\DATA\COPY\SMPTGL.xlsx", _ "D:\JOB DAILY\DATA\COPY\SMPPWO.xlsx", _ "D:\JOB DAILY\DATA\COPY\KRMSRG1.xlsx", _ "D:\JOB DAILY\DATA\COPY\KRMSRG2.xlsx", _ "D:\JOB DAILY\DATA\COPY\KRMPTI.xlsx", _ "D:\JOB DAILY\DATA\COPY\KRMTGL.xlsx", _ "D:\JOB DAILY\DATA\COPY\KRMPWO.xlsx")
' Tentukan path file tujuan
destinationFilePath = "D:\JOB DAILY\KELUAR MASUK KARUNG\JANUARI 2024\TOTAL KELUAR DAN MASUK KARUNG DI GATEWAY TEMPLATE NEW UPDATE.xlsx"
' Buat objek FileSystemObject
Set fs = CreateObject("Scripting.FileSystemObject")
' Pastikan file tujuan ada
If fs.FileExists(destinationFilePath) Then
' Nonaktifkan pesan peringatan saat menutup file Application.DisplayAlerts = False
' Buka file tujuan
Set destinationWorkbook = Workbooks.Open(destinationFilePath)
' Loop melalui setiap file sumber
For i = LBound(sourceFilePaths) To UBound(sourceFilePaths) ' Pastikan file sumber ada
If fs.FileExists(sourceFilePaths(i)) Then
' Buka file sumber tanpa memperbarui tautan
Set sourceWorkbook = Workbooks.Open(sourceFilePaths(i), UpdateLinks:=False)
' Tentukan worksheet sumber dan tujuan
Set sourceWorksheet = sourceWorkbook.Sheets(1) ' Ganti dengan indeks atau nama sheet sumber
' Tentukan sheet tujuan berdasarkan indeks yang diinginkan Dim destinationSheetIndex As Integer
Select Case i Case 0 To 1
destinationSheetIndex = 4 ' Sesuaikan dengan indeks sheet tujuan untuk SMPSRG Case 2
destinationSheetIndex = 5 ' Sesuaikan dengan indeks sheet tujuan untuk SMPSRG Case 3
destinationSheetIndex = 6 ' Sesuaikan dengan indeks sheet tujuan untuk SMPSRG Case 4
destinationSheetIndex = 7 ' Sesuaikan dengan indeks sheet tujuan untuk SMPSRG Case 5 To 6
destinationSheetIndex = 12 ' Sesuaikan dengan indeks sheet tujuan untuk KRMSRG Case 7
destinationSheetIndex = 13 ' Sesuaikan dengan indeks sheet tujuan untuk SMPSRG Case 8
destinationSheetIndex = 14 ' Sesuaikan dengan indeks sheet tujuan untuk SMPSRG Case 9
destinationSheetIndex = 15 ' Sesuaikan dengan indeks sheet tujuan untuk SMPSRG
End Select
' Set destinationWorksheet sesuai dengan indeks yang diinginkan
Set destinationWorksheet = destinationWorkbook.Sheets(destinationSheetIndex)
' Menentukan baris tujuan (disini, kita menggunakan baris ke-3, ganti sesuai kebutuhan) Dim destinationRow As Long
destinationRow = destinationWorksheet.Cells(destinationWorksheet.Rows.Count, 1).End(xlUp).Row + 1
' Copy data dari sheet sumber ke sheet tujuan destinationWorksheet.Cells(destinationRow, 1).Resize(sourceWorksheet.UsedRange.Rows.Count,
sourceWorksheet.UsedRange.Columns.Count).Value = sourceWorksheet.UsedRange.Value
' Tutup file sumber tanpa menyimpan perubahan sourceWorkbook.Close SaveChanges:=False Else
MsgBox "File sumber tidak ditemukan: " & sourceFilePaths(i) End If
Next i
' Nyalakan kembali pesan peringatan saat menutup file Application.DisplayAlerts = True
Else
MsgBox "File tujuan tidak ditemukan."
End If End Sub
Sub ProsesDataSheet(ParamArray sheetNames() As Variant) Dim i As Integer
' Loop melalui setiap sheet
For i = LBound(sheetNames) To UBound(sheetNames) Call ProsesData(sheetNames(i))
Next i End Sub
Sub ProsesData(sheetName As Variant)
' Menggunakan sheet dengan nama yang diberikan Dim ws As Worksheet
On Error Resume Next
Set ws = ThisWorkbook.Sheets(sheetName) On Error GoTo 0
If Not ws Is Nothing Then
' 1. Copy rumus AQ2 dan AR2 ke AQ4:AQ dan AR4:AR If InStr(1, sheetName, "SMP", vbTextCompare) > 0 Then
ws.Range("AQ2:AR2").Copy ws.Range("AQ4:AR" & ws.Cells(ws.Rows.Count,
"A").End(xlUp).Row)
ElseIf InStr(1, sheetName, "KRM", vbTextCompare) > 0 Then
ws.Range("AQ1:AR1").Copy ws.Range("AQ3:AR" & ws.Cells(ws.Rows.Count,
"A").End(xlUp).Row) End If
' 2. Copy AQ4:AQ dan AR4:AR paste value
ws.Range("AQ4:AR" & ws.Cells(ws.Rows.Count, "A").End(xlUp).Row).Copy
ws.Range("AQ4:AR" & ws.Cells(ws.Rows.Count, "A").End(xlUp).Row).PasteSpecial xlPasteValues
' 3. KOLOM AS4:AS VLOOKUP(A4, 'D:\JOB DAILY\DATA\[RETUR JANUARI 2024.xlsx]Sheet1'!$A:$E, 5, FALSE)
Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row If InStr(1, sheetName, "SMP", vbTextCompare) > 0 Then
ws.Range("AS4:AS" & lastRow).Formula = "=VLOOKUP(A4, 'D:\JOB DAILY\DATA\
[RETUR JANUARI 2024.xlsx]Sheet1'!$A:$E, 5, FALSE)"
ElseIf InStr(1, sheetName, "KRM", vbTextCompare) > 0 Then
ws.Range("AW3:AW" & lastRow).Formula = "=VLOOKUP(A3, 'D:\JOB DAILY\DATA\
[RETUR JANUARI 2024.xlsx]Sheet1'!$A:$E, 5, FALSE)"
End If
' 4. COPY AS4:AS atau AW3:AW PASTE VALUES
If InStr(1, sheetName, "SMP", vbTextCompare) > 0 Then ws.Range("AS4:AS" & lastRow).Copy
ws.Range("AS4:AS" & lastRow).PasteSpecial xlPasteValues ElseIf InStr(1, sheetName, "KRM", vbTextCompare) > 0 Then ws.Range("AW3:AW" & lastRow).Copy
ws.Range("AW3:AW" & lastRow).PasteSpecial xlPasteValues End If
' Hapus Clipboard
Application.CutCopyMode = False End If
End Sub
Gabung jadikan 1 proses