Консультация № 177551
30.03.2010, 04:55
35.77 руб.
0 9 0
Ранее я задавал эот вопрос № 175400

Уважаемые эксперты, подскажите можно ли и как при помощи ВБА
на открытой ВЭБ странице узнать количество, имена форм ссылок, флажков, полей
для ввода информации, полей передающих сообщение и других составляющих
ВЭБ страницы, а также узнать их ID. Значение поля передающего сообщение, то есть та информация, которая им выдаётся.

Получил ответ:

Dim ie As Object
Dim control As Object
Dim collection As Object
Dim i As Integer
Dim controlnames() As String
Dim checkboxcount, textareacount, textboxcount, buttoncount, linkscount As Integer
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.navigate (...")
Do While ie.ReadyState <> 4
DoEvents


i = 1
If ie.Document.Frames.Length = 0 Then
Set collection = ie.Document.forms(0)
Else
Set collection = iie.Document.Frames(1).Document.forms(0)
End If
ReDim controlnames(0 To collection.Length)
For Each control In collection
controlnames(i) = control.ID
i = i + 1
If control.Type = "checkbox" Then
checkboxcount = checkboxcount + 1
End If
If control.Type = "text" Or control.Type = "password" Then
textboxcount = textboxcount + 1
End If
If control.Type = "textarea" Then
textareacount = textareacount + 1
End If
If control.Type = "button" Or control.Type = "submit" Or control.Type = "reset" Then
buttoncount = buttoncount + 1
End If
Next control
linkscount = ie.Document.Links.Length


Но на строке ie.navigate (...") получаю синтаксическую ошибку
Скажите почему??? Как изменить???

Обсуждение

давно
Управляющий
143894
2148
30.03.2010, 09:47
общий
Ципихович Эндрю:
А что у Вас прописано в этой команде навигации? Вы пробовали вместо скобок задавать URL, например ie.navigate "http://www.google.com"?
Об авторе:
Устав – есть устав! Если ты устав – то отдыхай!


Неизвестный
30.03.2010, 10:25
общий
F®ost:
Код с исправленым синтаксисом (Выделенное краcным заменить на нужный Вам URI):

Код:
Dim ie As Object
Dim control As Object
Dim collection As Object
Dim i As Integer
Dim controlnames() As String
Dim checkboxcount, textareacount, textboxcount, buttoncount, linkscount As Integer
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.navigate "http://www.postroika.ru/html/50step2.html"
Do While ie.ReadyState <> 4
DoEvents
Loop
i = 1
If ie.Document.Frames.Length = 0 Then
Set collection = ie.Document.forms(0)
Else
Set collection = ie.Document.Frames(1).Document.forms(0)
End If
ReDim controlnames(0 To collection.Length)
For Each control In collection
controlnames(i) = control.ID
i = i + 1
If control.Type = "checkbox" Then
checkboxcount = checkboxcount + 1
End If
If control.Type = "text" Or control.Type = "password" Then
textboxcount = textboxcount + 1
End If
If control.Type = "textarea" Then
textareacount = textareacount + 1
End If
If control.Type = "button" Or control.Type = "submit" Or control.Type = "reset" Then
buttoncount = buttoncount + 1
End If
Next control
linkscount = ie.Document.Links.Length
Неизвестный
30.03.2010, 22:15
общий
F®ost:
Спасибо за совет
На строке ie.navigate ввёл нужный адрес страница открылась
Далее
Set Collection = IE.Document.Frames(1).Document.forms(0) ' здесь изначально была ошибка 424, подумал, убрал одну букву i, двинулся дальше, как и советует эксперт Лысенков Антон Анатольевич
Далее
ReDim controlnames(0 To Collection.Length) 'здесь получаю ошибку 91 почему ???? Что надо изменить ????
Неизвестный
30.03.2010, 22:22
общий
Лысенков Антон Анатольевич:
Спасибо за совет
ReDim controlnames(0 To collection.Length) 'здесь получаю ошибку 91 почему ???? Что надо изменить ????
Неизвестный
31.03.2010, 11:47
общий
F®ost:
Мой уровень знаний по ВБА я оцениваю как средний я не сообразил
что поменять в ie.navigate (...")
В то же время сообразил, что нгадо убрать одну букву i
Сейчас Вы мне советуете чтобы я использовал ключевое слово Set при создании ссылки на объект
Извините мне ответ не понятен, уточните пожалуйста
Неизвестный
01.04.2010, 19:51
общий
Лысенков Антон Анатольевич:
Спасибо за совет
ReDim controlnames(0 To collection.Length) 'здесь получаю ошибку 91 почему ???? Что надо изменить ????

Неизвестный
01.04.2010, 19:52
общий
F®ost:
Мой уровень знаний по ВБА я оцениваю как средний я не сообразил
что поменять в ie.navigate (...")
В то же время сообразил, что нгадо убрать одну букву i
Сейчас Вы мне советуете чтобы я использовал ключевое слово Set при создании ссылки на объект
Извините мне ответ не понятен, уточните пожалуйста
Неизвестный
03.04.2010, 11:55
общий
Лысенков Антон Анатольевич:
Спасибо за совет, в момент когда я поставил нужную мне страницу, на строке
ReDim controlnames(0 To collection.Length) 'здесь получаю ошибку 91 почему ???? Что надо изменить ????
В то же время если ничего не менять и оставить ту страницу что есть у Вас всё нормально весь код проходит, почему?????????????

А также я не понял на открытой ВЭБ странице "http://www.postroika.ru/html/50step2.html" как узнать количество, имена форм ссылок, флажков, полей
для ввода информации, полей передающих сообщение и других составляющих ВЭБ страницы, а также узнать их ID. Значение поля передающего сообщение, то есть та информация, которая им выдаётся, этих переменных я не нашёл, если их нет добавьте пожалуйста
Закоментируйте пожалуйста строки кода
также после строк
Loop
i = 1
Есть строка: If ie.Document.Frames.Length = 0 Then
А как узнать количество, то есть строка Кол=ie.Document.Frames.Length.Count не проходит, как будет правильно???????????????777


Неизвестный
03.04.2010, 13:17
общий
F®ost:
Спасибо за совет, в момент когда я поставил в код нужную мне страницу, на строке
ReDim controlnames(0 To collection.Length) 'здесь получаю ошибку 91 почему ???? Что надо изменить ????
В то же время если ничего не менять и в коде оставить страницу "http://www.postroika.ru/html/50step2.html" всё нормально весь код проходит, почему?????????????

А также я не понял на открытой ВЭБ странице "http://www.postroika.ru/html/50step2.html" как узнать количество, имена форм ссылок, флажков, полей
для ввода информации, полей передающих сообщение и других составляющих ВЭБ страницы, а также узнать их ID. Значение поля передающего сообщение, то есть та информация, которая им выдаётся, этих переменных я не нашёл, если их нет добавьте пожалуйста
Закоментируйте пожалуйста строки кода
также после строк
Loop
i = 1
Есть строка: If ie.Document.Frames.Length = 0 Then
А как узнать количество, то есть строка Кол=ie.Document.Frames.Length.Count не проходит, как будет правильно???????????????

Форма ответа