modified code to address coma inside field option:
Module 1 code:
Option Explicit
Option Compare Text ' comment this line to remove case-insensitive
Sub test()
Dim data, datafilt, result, rcount As Long, decsep As String, i As Long, n As Long, j As Long, temp
With Sheets("Search")
If .Range("a2") = "" Then Exit Sub
On Error Resume Next
Open ActiveWorkbook.Path & Application.PathSeparator & "$$$trash$$$.csv" For Input As #1
If Err.Number <> 0 Then
Application.EnableEvents = 1
MsgBox "File have to be closed. Please reopen it once again.", vbCritical
ActiveWorkbook.Close 1
End If
On Error GoTo 0
data = Split(Input(LOF(1), #1), vbCrLf)
Close #1
datafilt = Filter(data, .Range("a2"), 1)
rcount = UBound(datafilt)
If Application.International(xlDecimalSeparator) = "." Or Application.UseSystemSeparators = True Then decsep = "," Else decsep = ";"
ReDim result(1 To rcount + 1, 0 To 15) 'no of fields
If rcount > -1 Then
For i = 0 To rcount
temp = Split(datafilt(i), decsep)
j = j + 1
For n = 0 To UBound(temp)
result(j, n) = temp(n)
Next
Next
Application.ScreenUpdating = 0
.UsedRange.Offset(4).ClearContents
With .Range("a5").Resize(j, n)
.Value = result
.Replace "###", ",", xlPart
End With
Application.ScreenUpdating = 1
Else
MsgBox "No records containing search value have been found", vbInformation, "Search result"
End If
End With
End Sub
Thisworkbook level code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Kill ActiveWorkbook.Path & "\$$$trash$$$.csv"
End Sub
Private Sub Workbook_Open()
Application.ScreenUpdating = 0
decseparat = Application.DecimalSeparator
ipath = ActiveWorkbook.Path
On Error Resume Next
Kill ipath & Application.PathSeparator & "$$$trash$$$.csv"
On Error GoTo 0
With ActiveWorkbook
With Sheets("Data")
.Range("a2", .Cells(Rows.Count, 1).End(xlUp)).Resize(, .Cells(1, Columns.Count).End(xlToLeft).Column).Copy
With Workbooks.Add
With .Sheets(1)
.Range("a1").PasteSpecial xlPasteValues
.UsedRange.Replace ",", "###", xlPart
End With
.SaveAs (ipath & "\$$$trash$$$.csv"), FileFormat:=xlCSV
.Close 0
End With
End With
End With
Application.ScreenUpdating = 1
End Sub
Bookmarks