Что нового

[Автоматизация] Проверка значений из ячейки Excel на сайте. Возврат результата.

rout

Новичок
Сообщения
11
Репутация
0
Доброго времени суток!

Описание: Есть в наличии огромная база дислокации в Excel. Интересует из не только один столбец - ИНН, но так как база старая - в ней много уже не существующих организаций. Необходимо отсеять их, а всего в базе over 9000 организаций. Руками это делать - до пенсии.

Проблема: Так вот, у меня получилось прочитать этот столбец, взять значения из ячейки и подставить их в форму на сайте, нажать кнопку осуществляющую поиск - и! вот он - тупняк, дальше мне надо сделать следующее:
1. если на странице IE есть текст: Найдено: 0, то - вернутся в Excel к ячейке из которой взяли значение и отметить её, к примеру Bold. Если НЕ найдено - дальше.
или
1а. если на странице IE есть текст: Найдено: 0, то - вернутся в Excel к ячейке из которой взяли значение и записать в начало ячейки маркер (букву) например N.
2. Осуществить следующий поиск в том же окне IE

Спасибо.

Код:
For $i = 1 To 10 ; Loop для строки от 1 до 10
	$sR = $i+1
    $sCellValue = _ExcelReadCell($oExcel, $sR, 4) ; читаем +1 строку за каждый проход 4го столбца
	;MsgBox(0, "", "Значение ячейки: " & @CRLF & $sCellValue, 2)
	$oIE = _IECreate($sUrl) ; создаем окно IE и го на заданный адрес
	;_IELoadWait($oIE) ; ждем загрузки страницы, необязательно
	$oNum =  _IEGetObjByName($oIE, "num") ; получаем input по Name
	$oSubmit   = _IEGetObjByName($oIE,"action") ; получаем кнопку по её Name
	_IEFormElementSetValue($oNum, $sCellValue) ; ставим в input значение $sCellValue
	_IEAction ($oSubmit, "click") ; кликаем по кнопке
	_IELoadWait($oIE) ; ждем загрузки страницы
	If ... ;если
        Then ...

Next
 

Vlasssov

Осваивающий
Сообщения
428
Репутация
25
Я сильно извиняюсь, а зачем делать это все в excel? Сохранить нужные значения в массив, где один из столбцов будет хранить нужные значения, т

Сделать двумерный массив, куда все занести, а потом все обратно. Строки массива будут соответствовать строкам Excel

Код:
dim $sp[1][1]
$n = 10 ;количество строк с данными
$nn = 10 ;количество столбцов с данными
redim $sp[$n][$nn+2]

for $i=1 to $n
for $ii=1 to $nn
$sCellValue = _ExcelReadCell($oExcel, $i,$ii) ; переносим все значения из excel в массив
next
next

И в зависимости от того, что надо вноить изменения в элементы
Код:
$sp[$i][$nn+1]
$sp[$i][$nn+2]

С форматированием лучше вообще не замарачиваться.
 
Автор
R

rout

Новичок
Сообщения
11
Репутация
0
Всё сделал сам, спасибо за внимание, тему думал удалить, но авось кому сгодится.

Vlasssov, я то же сииильно извиняюсь, но Excel - это производственная необходимость - раз, ну и просил я подсказать мне конкретное решение именно для моей ситуации - два (а это по меньшей мере говорит о том, что решение с другой структурой мне не очень подходит). Благодарю за помощь.

Код:
If StringInStr(_IEBodyReadText($oIE), $sWord) <> 0 Then ; если на странице есть заданный текст 
          _ExcelWriteCell($oExcel, $sN & $sCellValue, $sR, 4) ; возвращаемся в Excel и записываем перед $sCellValue знак $sN
EndIf
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
rout
это хорошо что ты нашел решение, но я солидарен с Vlasssov. Всю кухню можно перенести в память, сделать все дела и пихнуть обратно в Excel. Уверен нет такой производственной необходимости, которая требует чтобы все это было поячеечно в Excel. Скорость возрастет значительно.
 

Vlasssov

Осваивающий
Сообщения
428
Репутация
25
Kaster сказал(а):
rout
это хорошо что ты нашел решение, но я солидарен с Vlasssov. Всю кухню можно перенести в память, сделать все дела и пихнуть обратно в Excel. Уверен нет такой производственной необходимости, которая требует чтобы все это было поячеечно в Excel. Скорость возрастет значительно.
Долгие годы работы с excel привели меня к решению, что лучше все сделать в массиве, а потом запихнуть в Excel... А еще, если окно excel сделать hide, то скорость обработки значительно возрастает. Вообще если работать с объектами напрямую, там много ресурсов уходит на обработку всего объекта.
 
Верх