Добрый день, уважаемые форумчане! Прошу вас о помощи в насущном вопросе:) Делаю заполнение web-формы из столбцов в Excel. Как заполнить текстовые поля я примерно понимаю, а вот как выбрать из списка? HTML-код раскрывающегося списка представлен ниже. Выбранный элемент, я так понимаю, отмечается словом SELECTED. Нужный статус записан в столбце С листа Лист1.
[moder]Покажите пример и код, который у Вас уже есть[/moder]
Добрый день, уважаемые форумчане! Прошу вас о помощи в насущном вопросе:) Делаю заполнение web-формы из столбцов в Excel. Как заполнить текстовые поля я примерно понимаю, а вот как выбрать из списка? HTML-код раскрывающегося списка представлен ниже. Выбранный элемент, я так понимаю, отмечается словом SELECTED. Нужный статус записан в столбце С листа Лист1.
я думала Вы код макроса покажете... попробуйте так: [vba]
Код
Sub rrr() Dim objIe As Object: Set objIe = CreateObject("InternetExplorer.Application") Dim elems As IHTMLElementCollection Dim elem As IHTMLElement Dim doc As HTMLDocument objIe.Visible = 1 'Поставить нужный url objIe.navigate "http://www...ttt.htm" Do DoEvents Loop Until objIe.readyState = 4 Set doc = objIe.document Set elems = doc.getElementsByTagName("select") For Each elem In elems If elem.Name = "contr_status" Then elem.Value = 62 'Поставить нужное значение Next elem Set elems = Nothing End Sub
я думала Вы код макроса покажете... попробуйте так: [vba]
Код
Sub rrr() Dim objIe As Object: Set objIe = CreateObject("InternetExplorer.Application") Dim elems As IHTMLElementCollection Dim elem As IHTMLElement Dim doc As HTMLDocument objIe.Visible = 1 'Поставить нужный url objIe.navigate "http://www...ttt.htm" Do DoEvents Loop Until objIe.readyState = 4 Set doc = objIe.document Set elems = doc.getElementsByTagName("select") For Each elem In elems If elem.Name = "contr_status" Then elem.Value = 62 'Поставить нужное значение Next elem Set elems = Nothing End Sub
Sub rrr() Dim objIe As Object: Set objIe = CreateObject("InternetExplorer.Application") Dim elems As IHTMLElementCollection Dim elem As IHTMLElement Dim doc As HTMLDocument objIe.Visible = 1 'Поставить нужный url objIe.navigate "http://www...ttt.htm" Do DoEvents Loop Until objIe.readyState = 4
Dim currVal$: currVal = "Card OK" Set doc = objIe.document Set elems = doc.getElementsByTagName("select") For Each elem In elems If elem.Name = "contr_status" Then For i = 0 To elem.Children.Length - 1 If elem.Children(i).innerHTML = currVal Then elem.Value = elem.Children(i).Value Next i End If Next elem Set elems = Nothing End Sub
[/vba] хотя мне так меньше нравится...Если Вы все равно из экселя заполняете, то почему, например ВПРом не вытянуть нужное value?
[vba]
Код
Sub rrr() Dim objIe As Object: Set objIe = CreateObject("InternetExplorer.Application") Dim elems As IHTMLElementCollection Dim elem As IHTMLElement Dim doc As HTMLDocument objIe.Visible = 1 'Поставить нужный url objIe.navigate "http://www...ttt.htm" Do DoEvents Loop Until objIe.readyState = 4
Dim currVal$: currVal = "Card OK" Set doc = objIe.document Set elems = doc.getElementsByTagName("select") For Each elem In elems If elem.Name = "contr_status" Then For i = 0 To elem.Children.Length - 1 If elem.Children(i).innerHTML = currVal Then elem.Value = elem.Children(i).Value Next i End If Next elem Set elems = Nothing End Sub
[/vba] хотя мне так меньше нравится...Если Вы все равно из экселя заполняете, то почему, например ВПРом не вытянуть нужное value?Manyasha
не могу выложить, только вечером :( Я немного изменила код. Ссылка расположена на листе АКТ в 28 столбце. Там будет работать цикл, проходящийся по всему столбцу, но пока делаю просто ссылку. А в 26 столбце стоит цифровой номер нужного статуса... Адрес берет правильный, но в указанном месте ошибка постоянно выходит :( может библиотеки какой нет или дело в браузере?..
[vba]
Код
Sub rrr() Dim objIe As Object: Set objIe = CreateObject("InternetExplorer.Application") Dim elems As IHTMLElementCollection Dim elem As IHTMLElement Dim doc As HTMLDocument objIe.Visible = 1 'вставить нужный url i = Sheets("АКТ").Cells(2, 28) objIe.navigate i Do DoEvents Loop Until objIe.readyState = 4 Set doc = objIe.document Set elems = doc.getElementsByTagName("select") s = Cells(2, 26) For Each elem In elems If elem.Name = "contr_status" Then elem.Value = s 'Поставить нужное значение Next elem Set elems = Nothing End Sub Option Explicitcode Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
не могу выложить, только вечером :( Я немного изменила код. Ссылка расположена на листе АКТ в 28 столбце. Там будет работать цикл, проходящийся по всему столбцу, но пока делаю просто ссылку. А в 26 столбце стоит цифровой номер нужного статуса... Адрес берет правильный, но в указанном месте ошибка постоянно выходит :( может библиотеки какой нет или дело в браузере?..
[vba]
Код
Sub rrr() Dim objIe As Object: Set objIe = CreateObject("InternetExplorer.Application") Dim elems As IHTMLElementCollection Dim elem As IHTMLElement Dim doc As HTMLDocument objIe.Visible = 1 'вставить нужный url i = Sheets("АКТ").Cells(2, 28) objIe.navigate i Do DoEvents Loop Until objIe.readyState = 4 Set doc = objIe.document Set elems = doc.getElementsByTagName("select") s = Cells(2, 26) For Each elem In elems If elem.Name = "contr_status" Then elem.Value = s 'Поставить нужное значение Next elem Set elems = Nothing End Sub Option Explicitcode Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
marryska_7, сейчас выложу... Напишите, что у Вас стоит в Cells(2, 28) и в Cells(2, 26) [p.s.]Option Explicit и все библиотеки (Declare Sub ...)должны подключаться перед кодом[/p.s.]
marryska_7, сейчас выложу... Напишите, что у Вас стоит в Cells(2, 28) и в Cells(2, 26) [p.s.]Option Explicit и все библиотеки (Declare Sub ...)должны подключаться перед кодом[/p.s.]Manyasha
Выкладываю пример. Страничку ttt.htm на диск С киньте. (код поправила) Возможно https виноват, но что с ним делать, я пока не знаю... Если мой пример сработает, а Ваш нет, тогда создайте свою тему, т.к. скорее всего дело не в макросе.
Выкладываю пример. Страничку ttt.htm на диск С киньте. (код поправила) Возможно https виноват, но что с ним делать, я пока не знаю... Если мой пример сработает, а Ваш нет, тогда создайте свою тему, т.к. скорее всего дело не в макросе.Manyasha