Look for blocks of code like this
 Sheets("Macro").Select 
'    
 '
'
  Range("A4").Select 
    ActiveCell.End(xlDown).Select 
    Endrow = ActiveCell.Row
Think about that it is doing and you can see that this does the same thing.
With Sheets("Macro")
'
'
'
EndRow = .Range("A4").End(xlDown).Row
you have to be carwful because when you see this
    Sheets("Cover").Copy After:=Workbooks(new_wbk).Sheets("Macro") 
    Sheets("Cover").Select
YOu have to know which workbook the Selected "Cover" sheet is in. Or you can specify
Workbooks(new_wbk).Sheets("Cover")
' or
THisWorkbook.Sheets("Cover")
Normally, you can just delete all
...Select
Selection...
and just insure that you leave one dot where the deletion occured. But in a case of Multiple uses of Selection with one Select
Cells.Select 
        Selection.Copy 
        Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ 
        False, Transpose:=False 
        Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _ 
        False, Transpose:=False
It's easiest to use a With Statement
With Cells
.Copy
.Paste Special...
.PasteSpecial...
End With