Функция GetVipiska формирует массив Vipiska (пользовательского типа) из текстового файла выписки и возвращает True, если всё произошло без ошибок. Если загрузка произошла с ошибкой, то информация об ошибке передаётся в переменные nErrNum и sErrDescr, а также отображается в окне Immidiate. Далее можете делать с этим массивом всё, что угодно - все данные уже в нужных форматах.
Прошу тестировать на ваших выписках (вдруг у разных банков есть свои нюансы) и предлагать варианты оптимизации кода. Пример тестирования:
- Код: Выделить всё
Sub Main()
Dim i&
Dim sPath As String
Dim nErrNum As Long
Dim sErrDescr As String
sPath = App.Path & "\" & "выписка.txt"
If GetVipiska(sPath, nErrNum, sErrDescr) Then
For i = 0 To UBound(Vipiska)
With Vipiska(i)
Debug.Print "Дата: "; .dOperDate
Debug.Print "Приход: "; .nPrihod
Debug.Print "Расход: "; .nRashod
Debug.Print "Контр: "; .sKontName
Debug.Print .sNaznPlat
End With
Next
Else
MsgBox sErrDescr, vbCritical, _
"Ошибка №" & nErrNum & " при загрузке выписки"
ReDim Vipiska(0) 'Очищаем ошибочный массив
End If
End Sub
Функция GetVipiska имеет четыре необязательных параметра. dBeg и dEnd предназначены на случай, если вы хотите загрузить не всю выписку из файла, а только операции, попадающие (включительно) в этот диапазон дат (по дате операции, а не по дате документа). nErrNum и sErrDescr, как уже было сказано выше, возвращают информацию об ошибке загрузки.