(у меня это работает, но на "простом" примере, т.е. я просто создал страничку с твоим кодом и успешно эмулировал клик на кнопке "go". адрес странички могу написать - сам попробуешь)
но для этого тебе нужно показать ее предка, которого можно идентифицировать...
Этого предка я найти не могу. Всё что в хедере на веб странице расположено внутри <script> </script>, нет ничего похожего на "fl" и "go". Где его искать (предка) не знаю.
(у меня это работает, но на "простом" примере, т.е. я просто создал страничку с твоим кодом и успешно эмулировал клик на кнопке "go". адрес странички могу написать - сам попробуешь)
но для этого тебе нужно показать ее предка, которого можно идентифицировать...
Этого предка я найти не могу. Всё что в хедере на веб странице расположено внутри <script> </script>, нет ничего похожего на "fl" и "go". Где его искать (предка) не знаю.ЗахаровСергей
вот, но это врядли чем тебе поможет (только чтобы убедиться, что код рабочий)
[vba]
Код
Private Sub Test() Dim he As Object
With CreateObject("InternetExplorer.Application") .Visible = True .Navigate "http://sagittarius.pro/test_fl.go" Do While .ReadyState <> 4 DoEvents Loop
Set he = .document.body.all("fl")("go") he.Click End With End Sub
[/vba]
чтобы двигаться дальше, нужно понять, в чем именно у тебя проблема? (не можешь получить объект go, или go успешно получаешь, клик эмулируешь, но войти не можешь, например потому, что не в те поля пишешь логин и пароль) не видя html-код, можно только гадать... 1. в твоем коде Set he = WebBrowser.document.body.all("fl")("go") выдает ошибку? 2. если нет, вставь после нее MsgBox he.outerhtml и напиши, что выдаст.
не нужно искать похожее на fl и go, просто покажи тэги (полностью сохраняя структуру), в которые заключена твоя ссылка <a title="" class="menu_blue" ... onclick="document.fl.go.click()"> [p.s.]хотя, конечно, лучше увидеть полный html-код этой страницы, а потом уже решать, как действовать...
вот, но это врядли чем тебе поможет (только чтобы убедиться, что код рабочий)
[vba]
Код
Private Sub Test() Dim he As Object
With CreateObject("InternetExplorer.Application") .Visible = True .Navigate "http://sagittarius.pro/test_fl.go" Do While .ReadyState <> 4 DoEvents Loop
Set he = .document.body.all("fl")("go") he.Click End With End Sub
[/vba]
чтобы двигаться дальше, нужно понять, в чем именно у тебя проблема? (не можешь получить объект go, или go успешно получаешь, клик эмулируешь, но войти не можешь, например потому, что не в те поля пишешь логин и пароль) не видя html-код, можно только гадать... 1. в твоем коде Set he = WebBrowser.document.body.all("fl")("go") выдает ошибку? 2. если нет, вставь после нее MsgBox he.outerhtml и напиши, что выдаст.
не нужно искать похожее на fl и go, просто покажи тэги (полностью сохраняя структуру), в которые заключена твоя ссылка <a title="" class="menu_blue" ... onclick="document.fl.go.click()"> [p.s.]хотя, конечно, лучше увидеть полный html-код этой страницы, а потом уже решать, как действовать...KSV
1. в твоем коде Set he = WebBrowser.document.body.all("fl")("go") выдает ошибку?
Пишет: Run-time error 91: Object variable or With block variable not set. Нажимаю Debug и желтым подсвечивается именно эта строка: Set he = WebBrowser.Document.body.all("fl")("go")
А если писать так: [vba]
Код
Set he = WebBrowser.Document.body.all("fl") Set he = WebBrowser.Document.body.all("go") he.Click
[/vba] то ошибка таже самая, но жёлтым уже подсвечивается he.Click
Если так: [vba]
Код
Set he = WebBrowser.Document.body.all("fl") Set he = WebBrowser.Document.body.all("go") MsgBox he.outerhtml he.Click
1. в твоем коде Set he = WebBrowser.document.body.all("fl")("go") выдает ошибку?
Пишет: Run-time error 91: Object variable or With block variable not set. Нажимаю Debug и желтым подсвечивается именно эта строка: Set he = WebBrowser.Document.body.all("fl")("go")
А если писать так: [vba]
Код
Set he = WebBrowser.Document.body.all("fl") Set he = WebBrowser.Document.body.all("go") he.Click
[/vba] то ошибка таже самая, но жёлтым уже подсвечивается he.Click
Если так: [vba]
Код
Set he = WebBrowser.Document.body.all("fl") Set he = WebBrowser.Document.body.all("go") MsgBox he.outerhtml he.Click
[/vba] то подсвечивается: MsgBox he.outerhtmlЗахаровСергей
ну, понятно. ты не можешь получить кнопку go. нужно видеть полный html-код страницы, иначе сказать сложно... "в вакууме" все работает (страница сделана из предоставленного тобой кода, только стили добавил, чтоб визуально было видно форму и кнопку)
как-то ты все "неправильно" делаешь, что у тебя даже спойлер не открывается... вот, без спойлера [vba]
Код
Private Sub Test() Dim he As Object
With CreateObject("InternetExplorer.Application") .Visible = True .Navigate "http://sagittarius.pro/test_fl.go" Do While .ReadyState <> 4 DoEvents Loop
Set he = .document.body.all("fl")("go") he.Click End With End Sub
[/vba]
ну, понятно. ты не можешь получить кнопку go. нужно видеть полный html-код страницы, иначе сказать сложно... "в вакууме" все работает (страница сделана из предоставленного тобой кода, только стили добавил, чтоб визуально было видно форму и кнопку)
как-то ты все "неправильно" делаешь, что у тебя даже спойлер не открывается... вот, без спойлера [vba]
Код
Private Sub Test() Dim he As Object
With CreateObject("InternetExplorer.Application") .Visible = True .Navigate "http://sagittarius.pro/test_fl.go" Do While .ReadyState <> 4 DoEvents Loop
Set he = .document.body.all("fl")("go") he.Click End With End Sub
For Each he In WebBrowser.Document.getElementsByTagName("textarea") placeholder = he.getAttribute("placeholder") If placeholder = "название, ИНН или ОГРН" Then he.setAttribute "value", "Надо всета-ки почитать азы работы с DOM" End If Next
[/vba]
Там все просто [vba]
Код
For Each he In WebBrowser.Document.getElementsByTagName("textarea") placeholder = he.getAttribute("placeholder") If placeholder = "название, ИНН или ОГРН" Then he.setAttribute "value", "Надо всета-ки почитать азы работы с DOM" End If Next
Полностью согласен. Спасибо огромное!!! А то всё изучаю методом научного тыка. Если бы ещё ссылочку на "азы работы с DOM" (с более ли менее понятным объяснением), то моей радости не будет предела.
Полностью согласен. Спасибо огромное!!! А то всё изучаю методом научного тыка. Если бы ещё ссылочку на "азы работы с DOM" (с более ли менее понятным объяснением), то моей радости не будет предела.ЗахаровСергей
doober, я думаю, ему было нужно немного другое... вот это: [vba]
Код
With WebBrowser.Document ' textarea получаем напрямую (по ID его предка), не гоняя сравнения в цикле Set he = .body.all("sug-participants").getElementsByTagName("textarea")(0) he.Focus ' установка фокуса, в поле ввода, нужна для корректного срабатывания фильтра he.Value = "ООО ""Победитель""" ' тот, кого ищем .getElementsByTagName("button")(0).Click ' эмитация клика на кнопке "Найти" End With
[/vba]
doober, я думаю, ему было нужно немного другое... вот это: [vba]
Код
With WebBrowser.Document ' textarea получаем напрямую (по ID его предка), не гоняя сравнения в цикле Set he = .body.all("sug-participants").getElementsByTagName("textarea")(0) he.Focus ' установка фокуса, в поле ввода, нужна для корректного срабатывания фильтра he.Value = "ООО ""Победитель""" ' тот, кого ищем .getElementsByTagName("button")(0).Click ' эмитация клика на кнопке "Найти" End With
Dim WebBrowser As Object Set WebBrowser = CreateObject("InternetExplorer.Application") WebBrowser.Visible = True WebBrowser.Navigate "https:ляляля" Do While Not (WebBrowser.ReadyState = 4) DoEvents Loop
Set he = WebBrowser.Document.body.all("Name") he.SetAttribute "value", "логин" Set he = WebBrowser.Document.body.all("Password") he.SetAttribute "value", "11111111" Set he = WebBrowser.Document.body.all("submit") he.Focus he.Click
If Application.Wait(Now + TimeValue("0:00:10")) Then ' Здесь я сам кликаю по этой ссылке, а потом в value вставляются данные из ячеек End If
Set he = .Document.body.all("votvot1") he.setAttribute "value", Range("B2") Set he = .Document.body.all("votvot2") he.setAttribute "value", Range("B3") Set he = .Document.body.all("votvot3") he.setAttribute "value", Range("B4")
[/vba]
Всё работает, спасибо.
А вот по прошлому вопросу пришлось сделать так:
[vba]
Код
Dim WebBrowser As Object Set WebBrowser = CreateObject("InternetExplorer.Application") WebBrowser.Visible = True WebBrowser.Navigate "https:ляляля" Do While Not (WebBrowser.ReadyState = 4) DoEvents Loop
Set he = WebBrowser.Document.body.all("Name") he.SetAttribute "value", "логин" Set he = WebBrowser.Document.body.all("Password") he.SetAttribute "value", "11111111" Set he = WebBrowser.Document.body.all("submit") he.Focus he.Click
If Application.Wait(Now + TimeValue("0:00:10")) Then ' Здесь я сам кликаю по этой ссылке, а потом в value вставляются данные из ячеек End If
Set he = .Document.body.all("votvot1") he.setAttribute "value", Range("B2") Set he = .Document.body.all("votvot2") he.setAttribute "value", Range("B3") Set he = .Document.body.all("votvot3") he.setAttribute "value", Range("B4")