Option Explicit
Sub DeleteRes()
Dim shArr, i&, eR&
shArr = Array("KE", "RS")
For i = 0 To 1
eR = Sheets(shArr(i)).Range("A" & Rows.Count).End(xlUp).Row
If eR > 1 Then Sheets(shArr(i)).Range("A2:X" & eR).ClearContents
Next i
End Sub
Sub Main()
Dim fso As Object, Dic As Object, FilesToOpen$, n&
Set Dic = CreateObject("scripting.dictionary")
Set fso = CreateObject("Scripting.FileSystemObject")
'Call DeleteRes
With Application.FileDialog(msoFileDialogFilePicker)
.InitialFileName = ThisWorkbook.Path
.Filters.Add "Text files", "*.txt; *.rtf", 1
.Title = "Select text file."
.AllowMultiSelect = True
If Not .Show = -1 Then Exit Sub
For n = 1 To .SelectedItems.Count
Call CreateRes(fso, Dic, .SelectedItems(n))
Dic.RemoveAll
Next n
End With
End Sub
Private Sub CreateRes(fso, Dic, ByVal FilesToOpen As String)
Dim TextSource As Object, S, tArr, Res()
Dim shName$, sply$, proName$, iDate As Date
Dim i&, k&, ik&, n&, d&, c&, jCol&
Set TextSource = fso.OpenTextFile(FilesToOpen, 1, False, -2) ' default
tArr = Split(TextSource.ReadAll, vbCrLf) ' default
ReDim sarr(1 To UBound(tArr), 1 To 2)
iDate = DateValue(Mid(tArr(0), InStr(1, tArr(0), "/") - 4, 10)) 'Date
For i = LBound(tArr) To UBound(tArr)
If InStr(1, tArr(i), "Program name", vbTextCompare) Then 'Program name
proName = Replace(Split(Mid(tArr(i), InStr(1, tArr(i), "=") + 1, 30), ".")(0), " ", "")
Exit For
End If
Next i
d = 0
If InStr(1, tArr(0), "JUKI KE") > 0 Then
shName = "KE"
ReDim Res(1 To UBound(tArr), 1 To 20)
For i = LBound(tArr) To UBound(tArr)
If InStr(1, tArr(i), "*") Then
sply = Replace(Mid(tArr(i), 9, 6), " ", "")
If Dic.exists(sply) = False Then
k = k + 1: jCol = 4
Dic.Add sply, k
Res(k, 1) = iDate: Res(k, 2) = proName: Res(k, 3) = sply
S = Split(Application.Trim(Mid(tArr(i), 34, 100)), " ")
For n = 0 To UBound(S)
jCol = jCol + 1
Res(k, jCol) = S(n)
Next n
Else
ik = Dic.Item(sply)
Res(ik, 4) = Application.Trim(Mid(tArr(i), 18, 26))
Res(ik, jCol + 1) = Application.Trim(Mid(tArr(i), 63, 8))
End If
End If
Next i
ElseIf InStr(1, tArr(0), "JUKI RS") > 0 Then
shName = "RS"
ReDim Res(1 To UBound(tArr), 1 To 24)
For i = LBound(tArr) To UBound(tArr)
If i = 142 Then
ik = 1
End If
If InStr(1, Replace(tArr(i), " ", ""), "SplyCompo.namePicked", vbTextCompare) Then
d = 4
ElseIf InStr(1, Replace(tArr(i), " ", ""), "SplyCompo.nameRcg", vbTextCompare) Then
d = 13
ElseIf InStr(1, Replace(tArr(i), " ", ""), "SplyLComponentname", vbTextCompare) Then
d = 22
End If
If d > 0 Then
c = InStr(1, Replace(tArr(i), "--", " "), "-")
If c > 0 And c < 15 Then
sply = Replace(Mid(tArr(i), 9, 7), " ", "")
If Dic.exists(sply) = False Then
k = k + 1
Dic.Add sply, k
Res(k, 1) = iDate: Res(k, 2) = proName: Res(k, 3) = sply
Res(k, 4) = Application.Trim(Mid(tArr(i), 18, 18))
End If
ik = Dic.Item(sply)
S = Split(Application.Trim(Mid(tArr(i), 37, 100)), " ")
jCol = d
If d < 22 Then
For n = 0 To UBound(S)
jCol = jCol + 1
Res(ik, jCol) = S(n)
Next n
Else
Res(ik, 23) = Application.Trim(Mid(tArr(i), 86, 8))
Res(ik, 24) = Application.Trim(Mid(tArr(i), 98, 8))
End If
End If
End If
Next i
End If
With Sheets(shName)
i = .Range("A" & Rows.Count).End(xlUp).Row
If k Then .Range("A" & i + 1).Resize(k, UBound(Res, 2)) = Res
End With
Set TextSource = Nothing
End Sub