Невозможно нажать на вкладку «Документы» изчерез код VBA - PullRequest
0 голосов
/ 26 февраля 2019
Private Declare PtrSafe Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdSHow As Long) As Long

Sub Pulldata_BI_Launch()
CreateObject("Shell.Application").Windows
Dim IE As New SHDocVw.InternetExplorer    
Dim htmldoc As MSHTML.HTMLDocument    
Dim elems As MSHTML.IHTMLElementCollection    
Dim attr As MSHTML.IHTMLBodyElement    

'Make internet explorer visible    
IE.Visible = True    
IE.Navigate "https://*************** "    
ShowWindow IE.hwnd, 3

'Wait for page loads fully    
Do While IE.readyState <> READYSTATE_COMPLETE    
Loop

'Collect webpage opened in variable    
Set htmldoc = IE.document

'Click on Documents tab from container    
Set elems = htmldoc.getElementsByTagName("a")    
    Set attr = elems.Item    
    For Each attr In elems    
    If (attr.Item("title") = "Documents") Then    
    attr.Click    
    Exit For    
    End If    
    Next attr    
End Sub

Я хочу нажать на вкладку Документы рядом с вкладкой Домашняя страница , но не могу сделать это.Любая помощь будет принята с благодарностью.Ниже приведен скриншот для проверки элемента вкладки «Документы»: введите описание изображения здесь

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Вы можете попробовать использовать атрибут css = селектор значений

ie.document.querySelector("[title=Documents]").click

Вы можете дополнительно добавить в класс:

ie.document.querySelector(".TabTitle[title=Documents]").click

Перед щелчком убедитесь, что у вас естьправильная загрузка страницы:

While ie.Busy Or ie.readyState < 4: DoEvents: Wend
0 голосов
/ 27 февраля 2019

Я пытаюсь протестировать ваш код, который выдает ошибку несоответствия типов в 2 местах.

Я предлагаю вам выполнить тест с кодом ниже, который может перейти на вкладку Документы.

HTML-код:

<!DOCTYPE html>
<html>
<head>
    <title>Page Title</title>
<script>
function abc()
{
alert("hi....");
}
</script>
</head>
<body>

<div class="TabContent TitleTabContainer">
<a title="Documents" class="TabTitle" role="tab" style="width:auto;" onclick="abc()" href="javascript:void(null);">Documents</a>
</div>

</body>
</html>

Код VBA:

Sub demo()
Dim ie As Object
Dim form As Variant, button As Variant
Set ie = CreateObject("InternetExplorer.Application")


With ie
.Visible = True
.Navigate ("C:\Users\Administrator\Desktop\48.html")

While ie.readyState <> 4
DoEvents
Wend

For Each l In ie.document.getElementsByTagName("a")
    If l.Title = "Documents" Then
        l.Click
        Exit For
        End If

    Next

End With
End Sub

Вывод в IE 11:

enter image description here

Кроме того, вы можете попытаться сослаться на код и изменить его в соответствии с вашими требованиями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...