Article View: pl.comp.bazy-danych.msaccess
Article #137018Funkcja z regexp przy 500 wywołaniu sypie błędem 2042
From: Prot
Date: Fri, 09 Oct 2015 18:09
Date: Fri, 09 Oct 2015 18:09
55 lines
2815 bytes
2815 bytes
Witam!
Pracuje nad parserem danych z formatu MT940 (sformalizowany format importu
wyciągów bankowych) do accessa. Z mojej analizy wynika, że można go zrobić w
VBA z wykorzystaniem właściwości tzw. submatches. Wykorzystać planuje
funkcję:
Function GetItem(ByVal STR As String, Wzorzec As String, iNum As Long)
Dim objRegExp As Object
Set objRegExp = CreateObject("vbscript.regexp")
On Error GoTo GetItem_Error
With objRegExp
.Global = True
.Pattern = Wzorzec
GetItem = .Execute(STR)(iNum).SubMatches(0)
End With
GetItem_Exit:
On Error GoTo 0
Set objRegExp = Nothing
Exit Function
GetItem_Error:
GetItem = CVErr(xlErrNA)
Resume GetItem_Exit
End Function
W testowym pliku tekstowym mam ponad 400 linii danych, obejmujących 28
rekordów tablicy z wyciągiem bankowym.
Dziwny problem powstał przy testowaniu w VBE 2007 działania tej funkcji: w
kodzie testowym wywołuje tą funkcję (oczywiście w pętli) z 500 razy i
wyłuskuje mi wszystkie potrzebne stringi i nagle przy 27 rekordzie danych
wywala run time error 13, a w debugerze błąd 2042 - (brak danych ???).
Błąd ten występuje w momencie analizy (kolejnego 26-stego stringu) 26
cyfrowego numeru konta bankowego i koniec.
Mam pytanie zatem dla znawców tematu czym może być spowodowany ten błąd ?
Czy są w VBA jakieś ograniczenia wielokrotności wywoływania funkcji własnych
? Czy każde wywołanie zajmuje "odrębne" miejsce w pamięci podręcznej i
trzeba ją cyklicznie czyścić ?
Z góry dziękuje za wszelkie sugestie i rozwiązania.
Prot
---
Ta wiadomość została sprawdzona na obecność wirusów przez oprogramowanie antywirusowe Avast.
https://www.avast.com/antivirus
Technical Details
Message-ID:
<mv8vs6$o2p$1@node1.news.atman.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail From: "Prot" <protnospam@widzew.net> Newsgroups: pl.comp.bazy-danych.msaccess Subject: Funkcja z regexp przy 500 wywołaniu sypie błędem 2042 Date: Fri, 9 Oct 2015 20:09:08 +0200 Organization: ATMAN - ATM S.A. Lines: 56 Message-ID: <mv8vs6$o2p$1@node1.news.atman.pl> NNTP-Posting-Host: ip-176.105.131.220.tvsat364.lodz.pl Mime-Version: 1.0 X-Trace: node1.news.atman.pl 1444414150 24665 176.105.131.220 (9 Oct 2015 18:09:10 GMT) X-Complaints-To: usenet@atman.pl NNTP-Posting-Date: Fri, 9 Oct 2015 18:09:10 +0000 (UTC) X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2900.5931 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157 X-Antivirus: avast! (VPS 151009-0, 2015-10-09), Outbound message X-Antivirus-Status: Clean Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit