Option Explicit
Sub sageOCT()
Dim lrow As Long, i As Long
Dim fname As Variant
Dim fpath As String, fname1 as string
Application.ScreenUpdating = False
Application.DisplayAlerts = False
fname = Application.GetOpenFilename(FileFilter:="All files (*.*), *.*", Title:="Please open the csv file")
If fname = "False" Then
MsgBox "You have not selected a file."
Exit Sub
Else
Workbooks.Open Filename:=fname
fname = ActiveWorkbook.Name
End If
With Workbooks(fname).Worksheets(1)
.Rows("1:1").Delete
.Columns("F:F").Delete
.Columns(1).Insert
lrow = .Range("B" & .Rows.Count).End(xlUp).Row
.Rows(1).Insert
For i = lrow To 2 Step -1
If .Range("B" & i).Value = "" Then .Rows(i).Delete
Next i
.Rows(1).Delete
lrow = .Range("B" & .Rows.Count).End(xlUp).Row
.Range("A1:A" & lrow).FormulaR1C1 = "=CONCATENATE(RC[2], "" "",RC[3], "" "",RC[1])"
.Columns("A:A").ColumnWidth = 32.17
.Columns("A:A").Copy
.Columns("D:D").PasteSpecial (xlPasteValues)
Application.CutCopyMode = False
.Columns("A:A").Delete
.Columns("B:B").Delete
.Columns("B:B").ColumnWidth = 63.83
.Range("G1:G" & lrow).FormulaR1C1 = "=IF(LEFT(RC[-5],1)=""N"",MID(RC[-5],6,250),RC[-5])"
.Columns("G:G").ColumnWidth = 37.5
.Columns("G:G").Copy
.Columns("B:B").PasteSpecial (xlPasteValues)
Application.CutCopyMode = False
.Columns("G:G").Delete
.Range("E1:E" & lrow).FormulaR1C1 = "=IF(RC[-2]="""", "" "", ""1"")"
.Columns("E:E").Copy
.Columns("E:E").PasteSpecial (xlPasteValues)
.Range("N1:N" & lrow).FormulaR1C1 = "=IF(RC[-11]="""", "" "", ""2"")"
.Columns("N:N").Copy
.Columns("N:N").PasteSpecial (xlPasteValues)
End With
fpath = "D:\Test"
fname1 = Format(Date, "ddmmyyyy") & ".csv"
Workbooks(fname).SaveAs Filename:=fpath & "\" & fname1, FileFormat:=xlCSV
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub