Try this.
Put this code in the 'template' workbook in a standard module.
When you run it, it will ask for 'source file'. This is the file it will copy FROM.
Sub CHSI()
'
' CHSI Macro
Dim WBSrc As Workbook
Dim SrcFN As String
Dim WS As Worksheet
Dim WSDest As Worksheet
'Set destination sheet as required.
Set WSDest = Workbooks("Forecast - 20xx-xx-xx.xlsm").Sheets(1)
'Displays open file dialog to get filename.
SrcFN = Application.GetOpenFilename(FileFilter:="Excel Files (*.xls*), *.xls*," _
, FilterIndex:=1, Title:="Open Excel file", MultiSelect:=False)
'If filename is not empty
If SrcFN <> False Then
'Open Workbook
Set WBSrc = Workbooks.Open(SrcFN)
'Set the worksheet.
Set WS = WBSrc.Worksheets("CHSI")
'Turn screen updating off.
Application.ScreenUpdating = False
'Copy away.
With WS
.Range("F2:F49").Copy WSDest.Range("A2").PasteSpecial(Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False)
.Range("F51:F84").Copy WSDest.Range("B2").PasteSpecial(Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False)
.Range("F100:F147").Copy WSDest.Range("C2").PasteSpecial(Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False)
.Range("F149:F196").Copy WSDest.Range("D2").PasteSpecial(Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False)
.Range("F198:F245").Copy WSDest.Range("E2").PasteSpecial(Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False)
.Range("F247:F294").Copy WSDest.Range("F2").PasteSpecial(Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False)
.Range("F296:F343").Copy WSDest.Range("G2").PasteSpecial(Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False)
End With
End If
'Turn screen updating on.
Application.ScreenUpdating = True
End Sub
Bookmarks