В Excel VB доступ к HTML ?

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
kama561
Сообщения: 3
Зарегистрирован: 02 ноя 2009, 14:00

В Екселе делаются веб-запросы для загрузки данных, но перед загрузкой нужно каждый раз залогиниваться на сайте.

Так как там metod post используется то передвать данные строкой не получается.

Соотвественно в VB-ке нужно загрузить страницу, присвоить переменным логин, пароль и т.д. и выполнить Вход (SubmitLogin).

Нашёл пример как сделать через запуск IE :
------------------
Sub sadowajaimperija_AutoLogin()
Set ie = CreateObject("InternetExplorer.application")
ie.Visible = True
ie.navigate ("http://www.sadowajaimperija.ru/login.php")
Do
If ie.readyState = 4 Then
ie.Visible = True
Exit Do
Else
DoEvents
End If
Loop

l = ie.Document.forms.Length
'USE VIEW SOURCE TO GET FORM ELEMENT IDS
ie.Document.forms(1).all("server").Value = "server3"
ie.Document.forms(1).all("login_user").Value = "name"
ie.Document.forms(1).all("login_pass").Value = "password"
ie.Document.forms(1).submit
ie.Document.forms

End Sub
-----------------
Но это с запуском експлорера и т.д., а нужно в скрытом режиме.
Аватара пользователя
EducatedFool
Сообщения: 197
Зарегистрирован: 06 апр 2008, 14:03
Откуда: Россия, Урал
Контактная информация:

А если попробовать зайти по такому адресу:
[url]http://[/url]name:password@http://www.sadowajaimperija.ru/login.php


Ну или так:

Код: Выделить всё

[color=darkblue]Sub[/color] sadowajaimperija_AutoLogin()
    [color=darkblue]Set[/color] ie = CreateObject("InternetExplorer.application")
    [B]ie.Visible = [color=darkblue]False[/color][/B]
    ie.navigate ("http://www.sadowajaimperija.ru/login.php")
    [B][color=darkblue]While[/color] ie.readyState <> 4: DoEvents: [color=darkblue]Wend[/color][/B]

    l = ie.Document.forms.Length
    [color=green]'USE VIEW SOURCE TO GET FORM ELEMENT IDS[/color]
    ie.Document.forms(1).all("server").Value = "server3"
    ie.Document.forms(1).all("login_user").Value = "name"
    ie.Document.forms(1).all("login_pass").Value = "password"
    ie.Document.forms(1).submit
    [B][color=green]' работаем дальше с текстом страницы[/color][/B]
[color=darkblue]End[/color] [color=darkblue]Sub[/color]
Зачем вообще надо было отображать браузер строкой ie.Visible = True?
Макросы для Excel, Word, CorelDRAW. Быстро, профессионально, недорого. http://ExcelVBA.ru/

Благодарности принимаются на кошелёк WebMoney: R318574877619 и Яндекс.Деньги: 41001335672216
kama561
Сообщения: 3
Зарегистрирован: 02 ноя 2009, 14:00

1. Не работает. К тому же в открытом виде пароль не передаётся ... если заглянуть в текст страницы то он там шифруется скриптами и тогда передаётся методом POST с помошью дополнительного поля.

Поле ввода пароля:
<input type="password" name="dummy" class="text loginput" style="width:100%;" id="login_pass" maxlength="100" size="15" tabindex="3" onchange="resetClick();">

Невидимое поле с шифровкой:
<input type="hidden" name="pass" value="" id="b64_pass">

2. В данном примере авторизация в IE конкретно происходит и на Excel не распостраняется, а мне нужно делать Веб-запросы именно в екселе.
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
что нету решения ?
Ответить