用Excel / VBA刮ASP页面

我想用Excel来刮取ASP.NET页面。 不幸的是,页面一次只能返回50个logging,有几页。 Excel的本地Web查询模块只会提取第一页。 我想要所有的页面。

像大多数(所有)ASP页面一样,当请求一个新页面时,有一些隐藏的variables被发送回服务器。 重要的是_VIEWSTATE和_EVENT_VALIDATION。

我已经写了一个VBA函数来获取页面的HTML源代码,并从这个函数中获取这些variables。

我也写了一个.iqy页面,它允许POST请求。 它看起来像这样:

WEB 1 http://www.myaspwebsite/search/search_List.aspx __EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=%2FwEPDwULLTEy[....truncated ..50k characters..]Mhudyk5U6u8%2BBpvxDPN8R4%3D&__EVENTVALIDATION=%2FwEWFQL%2FkN%2FBCgL6g%2B5vAvfY06EOAoic4qIIAome%2Bf4PAuOrjYgIAuKrjYgIAuGrjYgIAuCrjYgIAuerjYgIAt7e34UPAvuL7m8CtuLToQ4CiaTioggCyKX5%2Fg8C4tv1sAgC49v1sAgC4Nv1sAgC4dv1sAgC5tv1sAgC%2Fd7fhQ%2BU8QRtxd7MM4Bpa%2F%2FZC7I64eUh3Q%3D%3D&ctl00_RadMenu1_ClientState=&ctl00%24ContentPlaceHolder1%24NavBar1%24PageNoDropDownList=2&ctl00%24ContentPlaceHolder1%24NavBar1%24btnGo=Go&ctl00%24ContentPlaceHolder1%24NavBar2%24PageNoDropDownList=1 Selection=AllTables Formatting=None PreFormattedTextToColumns=True ConsecutiveDelimitersAsOne=True SingleBlockTextImport=False DisableDateRecognition=False DisableRedirections=False 

如果post查询被放置在文件中,则这个iqy页面成功地回退期望的结果。 我也可以在VBA中以编程方式使用这个.iqy页面,并使用QueryTablesdynamic地分配POST查询。 但是,我被告知我的查询没有返回任何东西。 我怀疑这是因为我的论点的长度。 仅VIEWSTATE是大约5万字。 我已经尝试将参数string打印到文件,并截断它。 不过,我可以从文件中读取相同的string并成功地dynamic使用它。

我的问题是:我是以这种最好的方式去做的? 在做这件事时我应该注意什么限制? 另外,Excel中的string大小是否有限制?