Я пытаюсь очистить страницу ASP.NET с помощью Excel. К сожалению, страница возвращает только 50 записей за раз, из нескольких страниц. Собственный модуль Excel для веб-запросов поднимает только первую страницу. Я хочу все страницы.
Как и большинство (всех?) ASP-страниц, есть несколько скрытых переменных, отправляемых обратно на сервер при запросе новой страницы. Важными из них являются _VIEWSTATE и _EVENT_VALIDATION.
Я написал функцию VBA, которая получает исходный HTML-код страницы и удаляет из него эти переменные.
Я также написал страницу .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
Эта страница iqy успешно возвращает желаемые результаты, если в файл помещен пост-запрос.
Я также могу использовать эту страницу .iqy программно в VBA и динамически назначать POST-запрос с помощью QueryTables. Однако мне сказали, что мой запрос ничего не дал.
Я подозреваю, что это из-за длины моего аргумента. Только VIEWSTATE составляет около 50 000 символов. Я попытался распечатать строку аргумента в файл, и он обрезает его. Однако я могу прочитать ту же строку из файла и успешно использовать ее динамически.
Мои вопросы: я иду об этом лучшим способом? Какие ограничения я должен знать при этом? Кроме того, есть ли ограничение на размер строки в Excel?