首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VBA对字符串长度有限制吗?

VBA对字符串长度有限制吗?
EN

Stack Overflow用户
提问于 2012-07-12 01:14:48
回答 1查看 1.7K关注 0票数 0

我有一个来自HTML源代码的大字符串(大约1,000,000个字符)。我正在使用msinet.ocx查看来自适当网站的文本。我写了一小段代码,以便找到出现在不同关键短语(“组件附件矩阵”)之前的关键短语("pkid="),但它不能正常工作。这就是我现在所拥有的:

代码语言:javascript
复制
workbench = Cells(columnNumber, 1).Value
myURL = "http://beams.us.yazaki.com/Beams/ViewDetails.aspx?topic=document&pkid=" _
& workbench
Dim inet1 As Inet
Dim mypage As String

Set inet1 = New Inet
With inet1
    .Protocol = icHTTP
    .URL = myURL
    mypage = .OpenURL(.URL, icString)
End With

CAMnum = InStr(mypage, "Component Accessory Matrix")
intStart = InStrRev(mypage, "pkid=", CAMnum) + 5
newnum = Mid(mypage, intStart, 6)
Cells(columnNumber, 2).Value = newnum

问题似乎出在mypage = .OpenURL(.URL, icString)上;当我运行len(mypage)时,它返回的值大约是100,000,而实际上它应该返回的值大约是100,000。有人能解释一下吗?

编辑: Gimp,我试过你的解决方案,但由于某些原因,ReturnStr仍然是空的。我也尝试了1024而不是2048,但这并没有改变任何事情。到目前为止,我已经复制并粘贴了我的代码。

代码语言:javascript
复制
Dim myURL

ActiveSheet.Range("a1").End(xlDown).Select lastColumn = Selection.Row

For columnNumber =2 To lastColumn workbench = Cells(columnNumber,1).Value myURL = "http://beams.us.yazaki.com/Beams/ViewDetails.aspx?topic=document&pkid=“_& workbench Dim inet1 As Inet mypage As String Dim ReturnStr As String

代码语言:javascript
复制
Set inet1 = New Inet
With inet1
    .Protocol = icHTTP
    .URL = myURL
    mypage = .OpenURL(.URL, icString)
    ReturnStr = .GetChunk(1024, icString)
End With

Do While Len(ReturnStr) <> 0
    DoEvents
    mypage = mypage & ReturnStr
    ReturnStr = inet1.GetChunk(1024, icString)
Loop

CAMnum = InStr(mypage, "Component Accessory Matrix")
intStart = InStrRev(mypage, "pkid=", CAMnum) + 5
newnum = Mid(mypage, intStart, 6)
Cells(columnNumber, 2).Value = newnum

Next columnNumber

我是不是漏掉了什么?我在网上搜索了GetChunk函数,我不认为我在语法上做错了什么,但可能是一些基本的错误。感谢您的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-12 03:26:53

在使用iNet时,当使用带有GetChunk函数的iNet的OpenURL时,您需要以块的形式读取文件。

尝试如下所示:

代码语言:javascript
复制
 myString = iNet1.OpenURL(.url, icString)
 ReturnStr = iNet1.GetChunk(2048, icString)

 Do While Len(ReturnStr) <> 0
    DoEvents
    myString = myString & ReturnStr
    ReturnStr = iNet1.GetChunk(2048, icString)
 Loop

这将把数据块读入ReturnStr,然后将它们附加到myString的末尾。

在这个循环之后,你的myString将包含整个页面。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11437911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档