Whenever I need to have 2 WBs open, I found I make less (fewer?) mistakes by assigning to WB variables, and never relying on ActiveWorkbook or ThisWorkbook or ActiveSheet
Option Explicit
Sub Rep1()
Dim wbReport As Workbook, wbThis As Workbook
Dim wsReport As Worksheet, wsInput As Worksheet
Dim wbRepName As String
Set wbThis = ThisWorkbook
Set wsInput = wbThis.Worksheets("Input")
wbRepName = Application.GetOpenFilename(FileFilter:="Excel workbook (*.xls),*.xls", Title:="Open Report")
If LCase(wbRepName) = "false" Then
Exit Sub
End If
Set wbReport = Application.Workbooks.Open(wbRepName)
Set wsReport = ActiveSheet
If wsReport.Name <> "Report1" Then
MsgBox "Invalid Report. Please select the correct file.", vbCritical, "Error"
wbReport.Close True
Exit Sub
End If
wsReport.Range("$A$1:$AD$201").RemoveDuplicates Columns:=5, Header:=xlYes
wsReport.Range("D2:D500").Select
Selection.Copy
wbThis.Activate
wsInput.Select
wsInput.Range("C2:C500").PasteSpecial xlPasteValues
Application.CutCopyMode = False
With wsInput.Range("D2")
.FormulaR1C1 = "=MID(RC[-1],LEN(RC[-1])-9,7)"
.AutoFill Destination:=Range("D2:D100"), Type:=xlFillDefault
End With
wbReport.Close True
wbThis.Activate
End Sub
Paul