Hi,
the following was implemented:
1. Macro checks for all files, if file not found msgbox will appear and no copying will be done
2. Copy code rewritten into ONE sub in Module1
3. I have no idea about copying charts/shapes into powerpoint, for this you should open a new thread (in case everything else works)
File: New Consolidated MSR 2.zip
Contains:
Option Explicit
Private Sub cmdUpdate_Click()
On Error GoTo ErrHandler
Dim aError, aFiles, i As Integer
With Application
.ScreenUpdating = False
.EnableEvents = False
.DisplayAlerts = False
End With
aFiles = Array("R.0007418_Liq Fil_MSR.xlsx", "R.0007420_Singapore_MSR.xlsx", "R.0007440_Houston_MSR.xlsx", _
"R.0007441_CPGF-AR_LR_MSR.xlsx", "R.0007441_CPGF-HR_MSR.xlsx", "R.0007442_Telecom_MSR.xlsx", _
"R.0007443_CPGK-HR_MSR.xlsx", "R.0007444_CPGK-LR_MSR.xlsx", "R.0007814_CTT_MSR.xlsx", _
"R.0008500_QUIMPER_MSR.xlsx", "R.0007272_EBU_MSR.xlsx", "R.0008490_CGT_MSR.xlsx", _
"R.0007399_CES-US_MSR.xlsx", "R.0007400_CRTI_MSR.xlsx", "R.0007415_Config_MSR.xlsx", _
"R.0007416_PDCA_MSR.xlsx", "R.0007417_PPSC_MSR.xlsx", "R.0007418_Air Fil_MSR.xlsx")
'check for files:
For i = LBound(aFiles) To UBound(aFiles)
If Dir(ThisWorkbook.Path & "\" & aFiles(i)) = vbNullString Then
MsgBox "File not found:" & vbLf & aFiles(i), vbOKOnly + vbInformation, "Error"
GoTo ErrHandler
End If
Next i
strError = vbNullString
With ThisWorkbook
GetFromWorkbook .Worksheets("Liq Fil"), "R.0007418_Liq Fil_MSR.xlsx"
GetFromWorkbook .Worksheets("Singapore"), "R.0007420_Singapore_MSR.xlsx"
GetFromWorkbook .Worksheets("Houston"), "R.0007440_Houston_MSR.xlsx"
GetFromWorkbook .Worksheets("CPGF AR-LR"), "R.0007441_CPGF-AR_LR_MSR.xlsx"
GetFromWorkbook .Worksheets("CPGF HR"), "R.0007441_CPGF-HR_MSR.xlsx"
GetFromWorkbook .Worksheets("Telecom"), "R.0007442_Telecom_MSR.xlsx"
GetFromWorkbook .Worksheets("CPGK HR"), "R.0007443_CPGK-HR_MSR.xlsx"
GetFromWorkbook .Worksheets("CPGK LR"), "R.0007444_CPGK-LR_MSR.xlsx"
GetFromWorkbook .Worksheets("CTT"), "R.0007814_CTT_MSR.xlsx"
GetFromWorkbook .Worksheets("Quimper"), "R.0008500_QUIMPER_MSR.xlsx"
GetFromWorkbook .Worksheets("EBU"), "R.0007272_EBU_MSR.xlsx"
GetFromWorkbook .Worksheets("CGT"), "R.0008490_CGT_MSR.xlsx"
GetFromWorkbook .Worksheets("CES-US"), "R.0007399_CES-US_MSR.xlsx"
GetFromWorkbook .Worksheets("CRTI"), "R.0007400_CRTI_MSR.xlsx"
GetFromWorkbook .Worksheets("Config"), "R.0007415_Config_MSR.xlsx"
GetFromWorkbook .Worksheets("PDCA"), "R.0007416_PDCA_MSR.xlsx"
GetFromWorkbook .Worksheets("PPSC"), "R.0007417_PPSC_MSR.xlsx"
GetFromWorkbook .Worksheets("Air Fil"), "R.0007418_Air Fil_MSR.xlsx"
.Worksheets("DU Dashboard").Activate
Sheet23.CreatePowerPoint
End With
If strError <> vbNullString Then
frmError.lstError.Clear
aError = Split(strError, vbLf)
For i = LBound(aError) + 1 To UBound(aError)
frmError.lstError.AddItem aError(i)
Next i
frmError.Show
End If
ErrHandler:
With Application
.DisplayAlerts = True
.EnableEvents = True
.ScreenUpdating = True
End With
If Err.Number <> 0 Then
MsgBox Err.Number & ": " & Err.Description
End If
End Sub
and
Option Explicit
Public strError As String
Sub GetFromWorkbook(xlWsTrgt As Worksheet, strWbNameSrc As String)
On Error GoTo ErrHandler
Dim wsCopy As Worksheet
Set wsCopy = Workbooks.Open(ThisWorkbook.Path & "\" & strWbNameSrc).Worksheets("Consolidated MSR")
wsCopy.Columns("A:AV").Copy
xlWsTrgt.Range("A1").PasteSpecial xlPasteValues
wsCopy.Parent.Close False
Exit Sub
ErrHandler:
strError = strError & vbLf & "Error in '" & xlWsTrgt.Name & "' - " & Err.Number & ": " & Err.Description
If Not wsCopy Is Nothing Then wsCopy.Parent.Close False
End Sub
and a Form showing errors in a listbox...
Bookmarks