Как вызвать javascript файл (.js) через Excel VBA?
Так как я против той же проблемы, я постараюсь представить вам, ребята, мое дело.
Я пытаюсь автоматизировать извлечение данных из каталога valeo с помощью макроса excel vba.
У меня есть список продуктов, связанных с автомобильными продуктами Valeo (огромный список, как более 3000 тысяч элементов). И я хотел бы импортировать непосредственно информацию из каталога, который, кажется, работает под javascript.
Данные, которые мне нужны, это список всех транспортных средств, прикрепленных к ссылке.
Я хотел бы получить доступ к вкладке "Прямой поиск статьи", чтобы скопировать ссылку непосредственно из ячейки вкладки excel, а затем смоделировать клик по ссылке, чтобы отобразить "связанную секцию транспортных средств", а затем чтобы скопировать их на новый лист excel.
Я уже успел сделать это с помощью html чистой запрограммированной веб-страницы (oscaro.com), используя следующий код:
Set maPageHtml = IE.document
Set Helem = maPageHtml.getElementsByTagName("input")
For i = 0 To Helem.Length - 1
If Helem(i).getAttribute("name") = "toFind" Then Helem(i).Value = "819971" '819971 is the valeo reference searched
If Helem(i).getAttribute("name") = "submit" Then Set Monbouton = Helem(i)
Next
Monbouton.Click 'this does the click on my button Monbouton
Но эта техника не может использоваться с веб-сайтом valeo, так как я не могу (или, по крайней мере, пока не знаю, как это сделать), чтобы выбрать/нажать кнопку, когда страница сделана на javascript, так как она не имеет имени, значения или идентификатора для кнопки.
Также кажется, что URL-адрес в поле адреса совпадает с нажатием кнопки "Прямой поиск статьи" и после нажатия....
Надеюсь, что я достаточно ясно, несмотря на мой английский...
Привет
Все ранее предложенные подходы кажутся мне взломанными.
Для более надежного решения вставьте Javascript в COM-компонент через Windows Script Компоненты и вызовите Javascript-based COM как и любой другой компонент COM.
Вы имеете в виду через Windows скриптовый хост? Вы можете скопировать (использовать команду оболочки) в wscript.exe с именем файла .js. Но эта объектная модель javascript не будет похожа на ту, которую вы получаете в браузере. Было бы полезно, если бы вы сказали нам, что должен был делать javascript.
Я не думаю, что есть прямой способ запустить код JavaScript в VBA.
Что вы можете попытаться сделать, это вставить код JavaScript в HTML-форму, которую вы можете открыть в (скрытом) браузере. Затем заполните элементы управления формой через DOM элемента управления браузера и отправьте форму. Представление запускает функцию JavaScript, которую вы хотите вызвать.
Пример (не проверен):
VBA:
oIE.Document.frmMain.param1.Value = 5
oIE.Document.frmMain.param2.Value = "6"
oIE.Document.frmMain.submit.click ' this line will call the JavaScript function
HTML:
<div id="submit" > <a href="javascript:doAction();">Do Action</a></div>
<script>
function doAction()
{
// do whatever the code should do
}
</script>