2011-01-13 4 views
0

Я пытаюсь загрузить файл Excel с веб-страницы с помощью сценариев WSHКак я могу выполнить функцию Javascript из VBScript?

Моя цель - сохранить файл Excel с веб-страницы на моей машине.

До сих пор были предприняты следующие шаги: Создал файл vbs, который регистрируется на веб-странице https, перенаправляет меня на другую страницу, используя вторую команду запуска, которая открывает новую вкладку, но после этого мои ограниченные знания не являются 't найти решение о том, как загрузить файл из ссылки для загрузки на веб-сайт в папку на моем жестком диске.

Dim wshShell 
Set wshShell = CreateObject("WScript.Shell") 
WshShell.Run "URL", 9 
wscript.sleep 3000 
WshShell.SendKeys "[email protected]" 
WshShell.SendKeys "{tab}" 
WshShell.SendKeys "password" 
WshShell.SendKeys "{enter}" 
WshShell.Run "Another_URL" 

Сейчас на данный момент существует Скачать Link, которая имеет функцию яваскрипта javascript:download(parameters), который при ручной мыши генерирует уникальную ссылку для скачивания.

Есть ли способ загрузить это с помощью любого Wscript? Я хочу, чтобы он работал с Windows 7 и IE 7. Я попытался изучить его, но это бесполезно.

ответ

0

Я имел некоторый успех, используя сценарий, аналогичный этому

option explicit 

Const URL = "http://url/to/file.xls" 
Const adTypeBinary = 1 
Const adSaveCreateOverWrite = 2 

' request the file over http 
dim http: set http = CreateObject("MSXML2.XMLHTTP") 
http.open "GET", URL, false 
http.send 

' write the response text to a binary file 
dim stream: set stream = CreateObject("ADODB.Stream") 
stream.type = adTypeBinary 
stream.open 
stream.write http.responseBody 
stream.SaveToFile "output.xls", adSaveCreateOverWrite 
stream.close 

хотя я не использовал его для HTTPS запросов, я предполагаю, что сервер будет принимать ваше имя пользователя и пароль, как 4 и 5-й параметр для вызова MSXML2.XMLHTTPopen.

http.open "GET", URL, false, "[email protected]", "password" 

Я попробовал это, и это, безусловно, работает над запросом простого HTTP

см http://msdn.microsoft.com/en-us/library/ms759148(VS.85).aspx для запроса HTTP и http://msdn.microsoft.com/en-us/library/ms675032(VS.85).aspx для ADOdb потока


Ну Альтернатива выше может быть для использования объекта автоматизации Internet Explorer. Я не знаю, как вы могли бы обрабатывать загрузки файла, но следующий фрагмент кода может дать вам отправную точку

option explicit 

' create an instance of IE 
dim ie: set ie = CreateObject("InternetExplorer.Application") 
' load a url 
ie.Navigate "http://stackoverflow.com/questions/4677595/how-can-i-execute-a-javascript-function-from-vbscript" 
' sleep while IE loads the content 
do while ie.busy 
    WScript.Sleep 10 
loop 
'access the document object 
dim doc: set doc = ie.document 

' have IE natvigate to a link on the downloaded page. this could be your 
' download link perhaps? 
ie.Navigate doc.anchors(0).href 
' wait while the new page loads... 
do while ie.busy 
    WScript.Sleep 10 
loop 
' output the new content 
WScript.Echo doc.documentElement.innerHTML 
' close IE 
ie.Quit 
+0

Это звено, которое генерируется по протоколу HTTPS: // Fixed_URL/Random_No_Generated _tbldnld = (первые пары) & sc = (второй параметр fn) Вручную это то, что происходит, после нажатия загрузки открывается окно загрузки FIle, которое затем я нажимаю на сохранение, чтобы сохранить его на месте. URL-адрес не имеет имени файла, но имя совпадает с именем случайного номера. Итак, могу ли я подражать этому поведению, если да, возможно, что скрипты или любая программа должны быть написаны - пожалуйста, помогите мне, и если нет, то почему это невозможно. Если вы оракул сертифицирован профессором за помощь, но я не вижу, как это решить , – tangyorangesour