1 - Para el primer grupo: eliminar columnas
No es necesario seleccionarlas antes, por ej:
Columns("G:I").Select
 Selection.Delete Shift:=xlToLeft
Puede ser reemplazado por:
Columns("G:I").Delete Shift:=xlToLeft
Así con cada grupo de columnas. Solo tené cuidado que al eliminar col la que selecciones a continuación sea la que realmente necesites eliminar.
2 - Cortar y pegar columnas: en lugar de las 4 primeras utilizar las 2 últimas.
       'Columns("O").Select
       'Selection.Cut
       'Range("D1").Select
       'Selection.Insert Shift:=xlToRight
 Columns("O").Cut
 Range("D1").Insert Shift:=xlToRight
3 - Insertar más de una columna:
En lugar de seleccionar 1 columna y repetir las instrucciones de Insert, se hace al revés: se selecciona la cantidad de columnas necesarias y se inserta 1 sola vez. Ej:
    'Columns("I:I").Select
    'Selection.Insert Shift:=xlToRight
    'Selection.Insert Shift:=xlToRight       'aquí estás intentando insertar 2 col, entonces sería:
Columns("I:J").Select
Selection.Insert Shift:=xlToRight
Creo que el resto es más de lo mismo.
Sdos!