Форум программистов, компьютерный форум, киберфорум
VBScript/JScript/WSH/WMI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 26.05.2014
Сообщений: 96
VBS

Вытащить данные по условию

11.08.2017, 17:02. Показов 1325. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте помогите пожалуйста с проблемой.
Я в VBS не очень разбираюсь, необходимо написать скрипт, который бы кликал на кнопку в таблице (из страницы в IE ), по определенному условию.
Пример такая таблица в IE, где Выбрать это кнопки.
Надо нажимать на ту кнопку выбрать где в поле счетов наибольшее число (например в таблице 11), количество и сождержание записей всегда разное.
123456Счетов 
      0Выбрать
      11Выбрать
      1Выбрать

У меня получилось только написать код на щелчок какой-нибудь одной кнопки, не по условию, а просто любой.
вот строчка моего кода:
Visual Basic
1
 GetElByAtr("input", "name", "listForm:listPage:j_id_jsp_1662016429_1pc3:0:selPCbtn").Click
Вот часть кода со страницы IE:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<TABLE class=dataTable cellSpacing=1><THEAD>
<TR>
<TH class=headerClass scope=col><SPAN class=outputText id=listForm:listPage:j_id_jsp_1662016429_1pc3:text10>1</SPAN></TH>
<TH class=headerClass scope=col><SPAN class=outputText id=listForm:listPage:j_id_jsp_1662016429_1pc3:text9>2</SPAN></TH>
<TH class=headerClass scope=col><SPAN class=outputText id=listForm:listPage:j_id_jsp_1662016429_1pc3:text8>3</SPAN></TH>
<TH class=headerClass scope=col><SPAN class=outputText id=listForm:listPage:j_id_jsp_1662016429_1pc3:text7>4</SPAN></TH>
<TH class=headerClass scope=col><SPAN class=outputText id=listForm:listPage:j_id_jsp_1662016429_1pc3:text5>5</SPAN></TH>
<TH class=headerClass scope=col><SPAN class=outputText id=listForm:listPage:j_id_jsp_1662016429_1pc3:text3>6</SPAN></TH>
<TH class=headerClass scope=col><SPAN class=outputText id=listForm:listPage:j_id_jsp_1662016429_1pc3:textDoc>7</SPAN></TH>
<TH class=headerClass scope=col><SPAN class=outputText id=listForm:listPage:j_id_jsp_1662016429_1pc3:textAccCnt>Cчетов</SPAN></TH>
<TH class=headerClass scope=col><SPAN class=outputText id=listForm:listPage:j_id_jsp_1662016429_1pc3:text1>&nbsp;</SPAN></TH></TR></THEAD>
<TBODY>
<TR class=rowClass1>
<TD class=columnClass1><SPAN>0</SPAN></TD>
<TD class=columnClass1><SPAN></SPAN></TD>
<TD class=columnClass1><SPAN></SPAN></TD>
<TD class=columnClass1><SPAN></SPAN></TD>
<TD class=columnClass1><SPAN></SPAN></TD>
<TD class=columnClass1><SPAN> </SPAN></TD>
<TD class=columnClass1><SPAN></SPAN></TD>
<TD class=columnClass1><SPAN>0</SPAN></TD>
<TD class=columnClass1><INPUT name=listForm:listPage:j_id_jsp_1662016429_1pc3:0:selPCbtn class=commandButton id=listForm:listPage:j_id_jsp_1662016429_1pc3:0:selPCbtn onclick=block(this); type=submit value=Выбрать></TD></TR>
<TR class=rowClass1>
<TD class=columnClass1><SPAN></SPAN></TD>
<TD class=columnClass1><SPAN></SPAN></TD>
<TD class=columnClass1><SPAN></SPAN></TD>
<TD class=columnClass1><SPAN></SPAN></TD>
<TD class=columnClass1><SPAN></SPAN></TD>
<TD class=columnClass1><SPAN></SPAN></TD>
<TD class=columnClass1><SPAN></SPAN></TD>
<TD class=columnClass1><SPAN>11</SPAN></TD>
<TD class=columnClass1><INPUT name=listForm:listPage:j_id_jsp_1662016429_1pc3:1:selPCbtn class=commandButton id=listForm:listPage:j_id_jsp_1662016429_1pc3:1:selPCbtn onclick=block(this); type=submit value=Выбрать></TD></TR>
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.08.2017, 17:02
Ответы с готовыми решениями:

Как вытащить из свойства fields recordset вытащить данные в массив
Как вытащить из свойства fields recordset вытащить данные в массив ассоциативный , подскажите плиз

Вытащить по условию определенного юзера
Нужно вытащить данные, но не вытаскивать те, у которых pid = 3585 и user_ip_register LIKE '213.87.%' Делаю так: SELECT...

Пытаюсь вытащить данные из двух таблиц, но данные попадает только из одной. Что мне делать?
Здравствуйте вот таким образом пытаюсь вытащить с двух таблиц данные но данные попадает только с одного что мне делать вот полный код: ...

12
 Аватар для diadiavova
7259 / 2606 / 745
Регистрация: 11.04.2015
Сообщений: 4,151
Записей в блоге: 43
12.08.2017, 19:21
Примерно так.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
        Dim table
        For Each t in document.getElementsByTagName("TABLE")
 
            If t.className = "dataTable" Then
                Set table = t
            End If
        Next
 
        Dim rows
        Set rows = table.getElementsByTagName("tr")
        Dim maxRow, maxSchetov
        maxSchetov = 0
        Set maxRow = rows(1)
        For i = 1 To rows.length - 1
            Dim schetov
            Set tds = rows(i).getElementsByTagName("td")
            schetov = parseInt(tds(7).innerText)
            If schetov > maxSchetov then
                maxSchetov = schetov
                Set maxRow = rows(i)
            End If
        Next
        Set btn = maxRow.getElementsByTagName("Input")(0)
        btn.click

Не по теме:

А вообще, VBS - это что-то с чем-то. Я вряд ли когда-нибудь пойму, почему люди до сих пор его используют.

1
12.08.2017, 22:00

Не по теме:

Цитата Сообщение от diadiavova Посмотреть сообщение
... VBS - это что-то с чем-то. Я вряд ли когда-нибудь пойму, почему люди до сих пор его используют...
Потому, что кого-то он вполне устраивает (по крайней мере, при решении некоторого круга задач). Чего тут ещё понимать-то.

0
 Аватар для volodin661
6793 / 2290 / 348
Регистрация: 10.12.2013
Сообщений: 7,901
13.08.2017, 01:22
Цитата Сообщение от diadiavova Посмотреть сообщение
Я вряд ли когда-нибудь пойму, почему люди до сих пор его используют
Имеет очень важное музейно-прикладное значение;
наглядно демонстрирует ошеломлённым посетителям, как может софтверная компания с миллиардными оборотами
производить унылые инструменты для решения некоторого круга задач.
Кстати, а что это за круг?
0
13.08.2017, 13:08

Не по теме:

Цитата Сообщение от volodin661
Кстати, а что это за круг?
Спасательный. И ничего музейного в нём нет. 99% насущных пользовательских и административных задач (пусть иногда и в комплекте с консольными приложениями или ActiveX-компонентами) для разных версий Windows решает.

0
0 / 0 / 0
Регистрация: 26.05.2014
Сообщений: 96
14.08.2017, 13:39  [ТС]
Пишу код:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Dim table, t, document, i, tds, perseInt,btn
        For Each t in document.getElementsByTagName("TABLE")
 
            If t.className = "dataTable" Then
                Set table = t
            End If
        Next
 
        Dim rows
        Set rows = table.getElementsByTagName("tr")
        Dim maxRow, maxSchetov
        maxSchetov = 0
        Set maxRow = rows(1)
        For i = 1 To rows.length - 1
            Dim schetov
            Set tds = rows(i).getElementsByTagName("td")
            schetov = parseInt(tds(7).innerText)
            If schetov > maxSchetov then
                maxSchetov = schetov
                Set maxRow = rows(i)
            End If
        Next
        Set btn = maxRow.getElementsByTagName("Input")(0)
        btn.click
И на строке :
Visual Basic
1
For Each t in document.getElementsByTagName("TABLE")
Выходит ошибка:
"run-time error '424' object required"

Подскажите пожалуйста, как исправить?

Добавлено через 1 час 5 минут
Исправил ошибку в строке :
Visual Basic
1
For Each t in document.getElementsByTagName("TABLE")
изменил на
Visual Basic
1
For Each t in IE.document.getElementsByTagName("TABLE")
Но теперь появилась та же ошибка в строке, и добавление IE не помогает:
Visual Basic
1
Set rows = table.getElementsByTagName("tr")
Подскажите пожалуйста
0
 Аватар для diadiavova
7259 / 2606 / 745
Регистрация: 11.04.2015
Сообщений: 4,151
Записей в блоге: 43
14.08.2017, 15:38
Ace23000, я этот код просто добавил на страницу и тестировал там. Ты, по всей видимости, используешь какое-то расширение для запуска скриптов и там могут быть свои правила. Вот страница, на которой это работает. Там внизу кнопочка, если ее нажать, то у кнопки с наибольшим значением текст подсветится красным.
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<html>
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=7">
    <meta charset="utf-8" />
    <title></title>
</head>
<body>
    <table class="dataTable" cellspacing="1">
        <thead>
            <tr>
                <th class="headerClass" scope="col"><span class="outputText" id="listForm:listPage:j_id_jsp_1662016429_1pc3:text10">1</span></th>
                <th class="headerClass" scope="col"><span class="outputText" id="listForm:listPage:j_id_jsp_1662016429_1pc3:text9">2</span></th>
                <th class="headerClass" scope="col"><span class="outputText" id="listForm:listPage:j_id_jsp_1662016429_1pc3:text8">3</span></th>
                <th class="headerClass" scope="col"><span class="outputText" id="listForm:listPage:j_id_jsp_1662016429_1pc3:text7">4</span></th>
                <th class="headerClass" scope="col"><span class="outputText" id="listForm:listPage:j_id_jsp_1662016429_1pc3:text5">5</span></th>
                <th class="headerClass" scope="col"><span class="outputText" id="listForm:listPage:j_id_jsp_1662016429_1pc3:text3">6</span></th>
                <th class="headerClass" scope="col"><span class="outputText" id="listForm:listPage:j_id_jsp_1662016429_1pc3:textDoc">7</span></th>
                <th class="headerClass" scope="col"><span class="outputText" id="listForm:listPage:j_id_jsp_1662016429_1pc3:textAccCnt">Cчетов</span></th>
                <th class="headerClass" scope="col"><span class="outputText" id="listForm:listPage:j_id_jsp_1662016429_1pc3:text1">&nbsp;</span></th>
            </tr>
        </thead>
        <tbody>
            <tr class="rowClass1">
                <td class="columnClass1"><span>0</span></td>
                <td class="columnClass1"><span></span></td>
                <td class="columnClass1"><span></span></td>
                <td class="columnClass1"><span></span></td>
                <td class="columnClass1"><span></span></td>
                <td class="columnClass1"><span></span></td>
                <td class="columnClass1"><span></span></td>
                <td class="columnClass1"><span>0</span></td>
                <td class="columnClass1">
                    <input name="listForm:listPage:j_id_jsp_1662016429_1pc3:0:selPCbtn" class="commandButton" id="listForm:listPage:j_id_jsp_1662016429_1pc3:0:selPCbtn" onclick="block(this);" type="submit" value="Выбрать"></td>
            </tr>
            <tr class="rowClass1">
                <td class="columnClass1"><span></span></td>
                <td class="columnClass1"><span></span></td>
                <td class="columnClass1"><span></span></td>
                <td class="columnClass1"><span></span></td>
                <td class="columnClass1"><span></span></td>
                <td class="columnClass1"><span></span></td>
                <td class="columnClass1"><span></span></td>
                <td class="columnClass1"><span>11</span></td>
                <td class="columnClass1">
                    <input name="listForm:listPage:j_id_jsp_1662016429_1pc3:1:selPCbtn" class="commandButton" id="listForm:listPage:j_id_jsp_1662016429_1pc3:1:selPCbtn" onclick="block(this);" type="submit" value="Выбрать"></td>
            </tr>
        </tbody>
    </table>
 
    <script type="text/vbscript">
    Function GetMaxButton()
        Dim table
        For Each t in document.getElementsByTagName("TABLE")
 
            If t.className = "dataTable" Then
                Set table = t
            End If
        Next
 
        Dim rows
        Set rows = table.getElementsByTagName("tr")
        Dim maxRow, maxSchetov
        maxSchetov = 0
        Set maxRow = rows(1)
        For i = 1 To rows.length - 1
            Dim schetov
            Set tds = rows(i).getElementsByTagName("td")
            schetov = parseInt(tds(7).innerText)
            If schetov > maxSchetov then
                maxSchetov = schetov
                Set maxRow = rows(i)
            End If
        Next
        Set GetMaxButton = maxRow.getElementsByTagName("Input")(0)
    End Function
 
    </script>
    <button onclick="MsgBox(GetMaxButton().style.color = 'red')">Подсветить кнопку</button>
</body>
</html>
Что касается работы с твоим расширением, то это надо вопрос задавать конкретно по нему.
0
0 / 0 / 0
Регистрация: 26.05.2014
Сообщений: 96
14.08.2017, 16:21  [ТС]
Во встроенном в Excel, эти ошибки выдает .
0
 Аватар для diadiavova
7259 / 2606 / 745
Регистрация: 11.04.2015
Сообщений: 4,151
Записей в блоге: 43
14.08.2017, 16:34
Цитата Сообщение от Ace23000 Посмотреть сообщение
Во встроенном в Excel
Честно говоря, я вообще не в курсе о чем речь. Встроенные браузер или что? Тогда при чем тут IE?
0
0 / 0 / 0
Регистрация: 26.05.2014
Сообщений: 96
14.08.2017, 16:36  [ТС]
Нет, браузер IE в VB через Excel захожу.
0
 Аватар для diadiavova
7259 / 2606 / 745
Регистрация: 11.04.2015
Сообщений: 4,151
Записей в блоге: 43
14.08.2017, 16:54
Цитата Сообщение от Ace23000 Посмотреть сообщение
Нет, браузер IE в VB через Excel захожу.
Тогда ты разделом ошибся. Здесь VBS, а тебе нужен VBA. Но при чем тут IE, я все равно не понял. В VBA обрабатывается объект Excell, а не HTML-документ и там объектная модель другая. Если обработка документа производится там, то делать это надо с учетом этого обстоятельства. А если это должно работать в браузере, то непонятно как это связано с кодом, написанным для эксель. Это те вопросы, которые надо будет объяснить в том разделе, задавая вопрос, иначе есть вероятность, что там тоже ничего не поймут.
0
0 / 0 / 0
Регистрация: 26.05.2014
Сообщений: 96
14.08.2017, 21:30  [ТС]
Ну сама эта табличка и кнопки в браузере IE, а код я запускаю из макроса ексель, там обрабатывается и по клику должно нажиматься на нужную кнопку.
0
 Аватар для diadiavova
7259 / 2606 / 745
Регистрация: 11.04.2015
Сообщений: 4,151
Записей в блоге: 43
15.08.2017, 10:22
Цитата Сообщение от Ace23000 Посмотреть сообщение
там обрабатывается и по клику должно нажиматься на нужную кнопку.
Я, честно говоря, вообще не понял как это. Я никогда о таком даже не слышал. Это не означает, что такого нет, но...
Даже если такое возможно, мне не очень понятно, для чего делать это так. Можно в браузер встроить скрипт и он будет там отрабатывать безо всяких экселей. Но в любом случае, если код пишется в экселе, то вопросы по нему в тот раздел, на который я указывал выше.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.08.2017, 10:22
Помогаю со студенческими работами здесь

Как вытащить строки из таблицы на другой лист по условию?
Доброго времени суток! Имеется таблица где в строках содержится информация о жителях ( ФИО, адрес и др.). Необходимо, чтобы на разных...

Как вытащить данные данные из цикла?
Добрый день. У меня возникла необходимость записать содержимое цикла в файл. Данные берутся из БД после чего заносятся в цикл. Результат...

Вытащить данные с HDD. Данные видны
Есть внешний диск (usb 3.0), он неисправен, но данные на нём видны. При копировании папки как только попадает на битую область система...

Как вытащить из строки один или два совпадения по условию?
Добрый день, Есть 2 строки: 1) 5818M8001966ABHF- 2) 4137M33X24001- Интересует такой вопрос: Как в 1) узнать, что перед -...

Как вытащить строки из таблицы на другой лист по условию с заданым распределением, с возможностью добавления или удаления строк в исходнике?
Добрый день! Подскажите кто-нибудь как вытащить строки с таблицы на другой лист с сортировкой по условию и выборкой по критерию


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru