运行时错误7使用vba集合的内存不足

我在Excel中是vba新手,事实上这是我第一次。 一路上,我已经设法解决大部分问题,并在网上find答案。 然而最新的问题,我无法find答案,解决我的问题。

这个function,下载一个jsonstring,并且通常是5 + mb大。 这个循环find每个组件的开始和结束,并将其添加到集合中。 一切都很好,直到我到1600 / 35K条目附近,运行时错误发生。

有第二个错误,与string的消息,但分配vbNullStringstring停止发生

Dim cnt As Long Dim json As String, idKey As String Dim strStart As Long, strFinish As Long cnt = 0 strStart = 1 strFinish = 0 On Error GoTo HandleIt Do While strFinish <= Len(dataStr) - 5 json = vbNullString strStart = InStr(strStart, dataStr, "{""Id"":", vbBinaryCompare) strFinish = InStr(strStart, dataStr, "}", vbBinaryCompare) - 1 json = Mid$(dataStr, strStart, strFinish) ' Get the itemID for the key 'strStart = InStr(6, json, ",", vbBinaryCompare) 'idKey = Mid$(json, 7, strStart - 7) TSMDataBulk.add json strStart = strFinish cnt = cnt + 1 Loop 

tltd:一切正常,直到TSMDataBulk.add导致内存不足错误。 谁能帮忙?

看起来你正在使用Mid $,就像参数是:Mid $(string,start,end)实际上,参数是:Mid $(string,start,length)

所以如果strStart是5000,strFinish是5050,那么你将返回从5000到10549的所有字符,而不是从5000到5050返回这些字符。这可能很好地解释了进一步进入string的内存不足错误。

更改:

 json = Mid$(dataStr, strStart, strFinish) 

至:

 json = Mid$(dataStr, strStart, (strFinish - strStart) + 1) 

TSMDataBulk看起来像是一个Scripting.Dictionary对象。 你正在添加一个键,但没有项目。

 TSMDataBulk.add key:=json, item:=json 'alternate no. 1 TSMDataBulk.add key:=json, item:="" 'alternate no. 2 (overwrite method) TSMDataBulk.item(json) = "" 

根据您的示例代码,在第一个位置有一个会话ID。 我可能会尝试将其用作关键字,并将其余部分作为项目。