I see Paul got to you before this but here it is anyway.
You don't need to select to enter data. As a matter of fact, it is frowned upon in most cases.
Range("A2").Select
ActiveCell.FormulaR1C1 = "NHI"
should be
Range("A2").Value = "NHI"
This goes for all selecting where you put data or formulae in a cell.
There is a continuation is this part. Use it to your advantage.
Range("E2").Select
ActiveCell.FormulaR1C1 = "Line 1"
Range("F2").Select
ActiveCell.FormulaR1C1 = "Line 2"
Range("G2").Select
ActiveCell.FormulaR1C1 = "Line 3"
Range("H2").Select
ActiveCell.FormulaR1C1 = "Line 4"
Range("I2").Select
ActiveCell.FormulaR1C1 = "Line 5"
Range("J2").Select
ActiveCell.FormulaR1C1 = "Line 6"
Range("K2").Select
ActiveCell.FormulaR1C1 = "Line 7"
Range("L2").Select
ActiveCell.FormulaR1C1 = "Line 8"
Range("M2").Select
ActiveCell.FormulaR1C1 = "Line 9"
Range("N2").Select
ActiveCell.FormulaR1C1 = "Line 10"
Range("O2").Select
ActiveCell.FormulaR1C1 = "Line 11"
Range("P2").Select
ActiveCell.FormulaR1C1 = "Line 12"
Range("Q2").Select
ActiveCell.FormulaR1C1 = "Line 13"
Range("R2").Select
ActiveCell.FormulaR1C1 = "Line 14"
Range("S2").Select
ActiveCell.FormulaR1C1 = "Line 15"
Range("T2").Select
ActiveCell.FormulaR1C1 = "Line 16"
You go uninterupted from Column E to Column T which is Column 5 to Column 20
You also go uninterupted from Line 1 to Line 16
So the above snippet (32 lines) could be changed to 3 lines
For i = 5 To 20
Cells(2, i).Value = Line " & i - 4
Next i
Note: Cells(2, 1) is the same as Range("A2")
Cells uses Rows first and then columns so the 2 is for Row 2 and the 1 is for Column A (first Column)
This
Sheets("Calculations").Select
Range("B220").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Data for Invoices").Select
Range("C3:C162").Select
ActiveSheet.Paste
should be replaced by something like
Sheets("Calculations").Range("B220").Copy Sheets("Data for Invoices").Range("C3:C162")
or
Sheets("Data for Invoices").Range("C3:C162").Value = Sheets("Calculations").Range("B220").Value 'values only
Mind you, in the beginning of your code you should use something like
Dim shCalc As Worksheet, shDatInv As Worksheet
Set shCalc = Worksheets("Calculations")
Set shDatInv = Worksheets("Data for Invoices")
Troughout your procedure (macro) you can now refer to these sheets as (example)
shCalc.Range("A1").Copy shDatInv.Range("B1")
instead of the longwinded example a few lines back.
This will fail if there are empty cells in the intended range.
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
The are multiple better ways but it depends on the circumstances.
Google something like "How to use variables and why in excel"
also "How to use With.....End With in Excel macros"
I certainly would read Post #2 again if I were you.
If you want to speed up your code, you've got something like 3000 lines of code to work through.
Happy chasing.