Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBScript/JScript/WSH/WMI/HTA
Войти
Регистрация
Восстановить пароль
 
Ace23000
0 / 0 / 2
Регистрация: 26.05.2014
Сообщений: 57
#1

Вытащить данные по условию - VBScript/JScript/VBS

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


http://www.cyberforum.ru/windows-admin/thread1087037.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.08.2017, 17:02
Я подобрал для вас темы с готовыми решениями и ответами на вопрос VBS Вытащить данные по условию (VBScript/JScript):

Как вытащить из свойства fields recordset вытащить данные в массив
Как вытащить из свойства fields recordset вытащить данные в массив...

Вытащить по условию определенного юзера
Нужно вытащить данные, но не вытаскивать те, у которых pid = 3585 и...

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

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

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

12
diadiavova
3644 / 1232 / 392
Регистрация: 11.04.2015
Сообщений: 2,304
Записей в блоге: 33
12.08.2017, 19:21 #2
Примерно так.
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
Dmitrii
12.08.2017, 22:00
  #3

Не по теме:

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

0
volodin661
1742 / 853 / 144
Регистрация: 10.12.2013
Сообщений: 2,919
13.08.2017, 01:22 #4
Цитата Сообщение от diadiavova Посмотреть сообщение
Я вряд ли когда-нибудь пойму, почему люди до сих пор его используют
Имеет очень важное музейно-прикладное значение;
наглядно демонстрирует ошеломлённым посетителям, как может софтверная компания с миллиардными оборотами
производить унылые инструменты для решения некоторого круга задач.
Кстати, а что это за круг?
0
FlasherX
13.08.2017, 13:08
  #5

Не по теме:

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

0
Ace23000
0 / 0 / 2
Регистрация: 26.05.2014
Сообщений: 57
14.08.2017, 13:39  [ТС] #6
Пишу код:
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
3644 / 1232 / 392
Регистрация: 11.04.2015
Сообщений: 2,304
Записей в блоге: 33
14.08.2017, 15:38 #7
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
Ace23000
0 / 0 / 2
Регистрация: 26.05.2014
Сообщений: 57
14.08.2017, 16:21  [ТС] #8
Во встроенном в Excel, эти ошибки выдает .
0
diadiavova
3644 / 1232 / 392
Регистрация: 11.04.2015
Сообщений: 2,304
Записей в блоге: 33
14.08.2017, 16:34 #9
Цитата Сообщение от Ace23000 Посмотреть сообщение
Во встроенном в Excel
Честно говоря, я вообще не в курсе о чем речь. Встроенные браузер или что? Тогда при чем тут IE?
0
Ace23000
0 / 0 / 2
Регистрация: 26.05.2014
Сообщений: 57
14.08.2017, 16:36  [ТС] #10
Нет, браузер IE в VB через Excel захожу.
0
diadiavova
3644 / 1232 / 392
Регистрация: 11.04.2015
Сообщений: 2,304
Записей в блоге: 33
14.08.2017, 16:54 #11
Цитата Сообщение от Ace23000 Посмотреть сообщение
Нет, браузер IE в VB через Excel захожу.
Тогда ты разделом ошибся. Здесь VBS, а тебе нужен VBA. Но при чем тут IE, я все равно не понял. В VBA обрабатывается объект Excell, а не HTML-документ и там объектная модель другая. Если обработка документа производится там, то делать это надо с учетом этого обстоятельства. А если это должно работать в браузере, то непонятно как это связано с кодом, написанным для эксель. Это те вопросы, которые надо будет объяснить в том разделе, задавая вопрос, иначе есть вероятность, что там тоже ничего не поймут.
0
Ace23000
0 / 0 / 2
Регистрация: 26.05.2014
Сообщений: 57
14.08.2017, 21:30  [ТС] #12
Ну сама эта табличка и кнопки в браузере IE, а код я запускаю из макроса ексель, там обрабатывается и по клику должно нажиматься на нужную кнопку.
0
diadiavova
3644 / 1232 / 392
Регистрация: 11.04.2015
Сообщений: 2,304
Записей в блоге: 33
15.08.2017, 10:22 #13
Цитата Сообщение от Ace23000 Посмотреть сообщение
там обрабатывается и по клику должно нажиматься на нужную кнопку.
Я, честно говоря, вообще не понял как это. Я никогда о таком даже не слышал. Это не означает, что такого нет, но...
Даже если такое возможно, мне не очень понятно, для чего делать это так. Можно в браузер встроить скрипт и он будет там отрабатывать безо всяких экселей. Но в любом случае, если код пишется в экселе, то вопросы по нему в тот раздел, на который я указывал выше.
0
15.08.2017, 10:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.08.2017, 10:22
Привет! Вот еще темы с решениями:

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

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

Вытащить данные из Эксель
Здравствуйте! Имеется следующая задача: 2 столбца в Excel с текстовой...

Вытащить и изменить данные
&lt;? if (!isset ($id) ) { $result = mysql_query(&quot;SELECT id, name FROM vuz&quot;);...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru