VBA IE Automation - не удается найти идентификатор элемента экспорта - PullRequest
0 голосов
/ 21 сентября 2018

Я работаю в Microsoft Excel 2010 VBA и пытаюсь автоматизировать загрузку отчетов в формате pdf.Я могу перейти туда, где мне нужно, но я застрял на последнем шаге;

Есть элемент «Экспорт», который ведет себя как ссылка.Если бы я щелкнул по нему, он начал бы загрузку PDF.Я хочу автоматизировать это и направить загрузку в указанную папку, но когда я проверяю элемент, у него, похоже, нет идентификатора элемента, по которому я могу его вызвать (т. Е. GetElementById (). Click).

Я новичок в автоматизации VBA IE.У кого-нибудь есть предложения о том, как запустить эту функцию «Экспорт»?

Я не могу поделиться полной HTML-информацией, как для сайта с конфиденциальными данными, но ниже приведены фрагменты HTML, моего VBA.код и снимок экрана рассматриваемого HTML-раздела:

<DIV style="FONT-SIZE: 8pt; HEIGHT: 30px; FONT-FAMILY: Verdana; DISPLAY: inline"><TABLE style="DISPLAY: inline" cellSpacing=0 cellPadding=0>
<TBODY>
<TR>
<TD height=28><SELECT id=PrintFormat><OPTION value="">Select a format</OPTION><OPTION selected value=Pdf>Acrobat (PDF) file</OPTION></SELECT></TD>
<TD width=4></TD>
<TD height=28><A onclick="if (document.getElementById('PrintFormat').value != '') {var url = document.getElementById('PrintFormat').value + 'Stream.aspx'; document.location.href = url;}" style="FONT-SIZE: 8pt; TEXT-DECORATION: none; FONT-FAMILY: Verdana" href="#" shape="">Export</A></TD></TR></TBODY></TABLE></DIV>

Мой код VBA;

Sub pdfdownloadautomation()
Set objIE = New InternetExplorer
objIE.Visible = True
objIE.navigate Sheet3.Range("A1").Value 'A1 contains url
objIE.document.getElementById("PrintFormat").Value = "Pdf"
'works fine to this point - just not sure how to call the export
objIE.document.getElementById("?").Click

End Sub

снимок экрана проверяемого элемента в IE

1 Ответ

0 голосов
/ 21 сентября 2018

Вы можете попробовать селектор CSS следующим образом для нацеливания на элемент.Я не могу проверить и не знаю, есть ли родительские теги frame / iframe / form для навигации.Кажется, что есть один элемент формы, по крайней мере, видимый.Пожалуйста, предоставьте HTML, включая этот тег формы, если это возможно.Я дал варианты без родителя form и включая родителя form (что выглядит так) - предположение с родительским элементом form состоит в том, что это первый элемент form на странице.

ie.document.querySelector("td a[onclick^='if']").Click

Что может стать:

ie.document.getElementsByTagName("form")(0).querySelector("td a[onclick^='if']").Click

Селектор CSS, вероятно, более сложный, чем требуется, но я пытаюсь локализовать, используя видимые подсказки на вашем изображении, т.е. что есть элемент с *Тег 1011 *, который имеет атрибут onclick, начинающийся с 'if', и находится внутри родительского тега td.

Вы также можете собрать все элементы тега и цикл до тех пор, пока Export innerText не станетнайдено:

Dim list As Object, item As Object
Set list = ie.document.getElementsByTagName("a")
For Each item In list
    If item.innerText = "Export" Then
        item.Click
        Exit For
    End If
Next

Опять это может стать

Set list = ie.document.getElementsByTagName("form")(0).getElementsByTagName("a")
...