В Екселе делаются веб-запросы для загрузки данных, но перед загрузкой нужно каждый раз залогиниваться на сайте.
Так как там 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
-----------------
Но это с запуском експлорера и т.д., а нужно в скрытом режиме.
В Excel VB доступ к HTML ?
Модератор: Naeel Maqsudov
- EducatedFool
- Сообщения: 197
- Зарегистрирован: 06 апр 2008, 14:03
- Откуда: Россия, Урал
- Контактная информация:
А если попробовать зайти по такому адресу:
[url]http://[/url]name:password@http://www.sadowajaimperija.ru/login.php
Ну или так:
Зачем вообще надо было отображать браузер строкой ie.Visible = True?
[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]
Макросы для Excel, Word, CorelDRAW. Быстро, профессионально, недорого. http://ExcelVBA.ru/
Благодарности принимаются на кошелёк WebMoney: R318574877619 и Яндекс.Деньги: 41001335672216
Благодарности принимаются на кошелёк WebMoney: R318574877619 и Яндекс.Деньги: 41001335672216
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 не распостраняется, а мне нужно делать Веб-запросы именно в екселе.
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
что нету решения ?
Поле ввода пароля:
<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 не распостраняется, а мне нужно делать Веб-запросы именно в екселе.
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
что нету решения ?