2017-02-14 13 views
2

Не могли бы вы рассказать мне, как использовать подстановочные знаки в excel vba internet explorer?Как использовать wildcard в excel vba internet explorer

id="btn_edit_card_1NLQNQD0D93O" 

каждый раз это число в другой. Как нажать на эту кнопку с помощью

document.getElementById 

Там нет класса в коде

<a id="btn_edit_card_1NLQNQD0D93O" href="/trades/bejelentes_egyszerusitett/1NLQNQD0D93O">Editing basic data</a> 
+1

Возможно, этот 'document.getElementById' является частью коллекции. Попробуйте передать коллекцию и попытаться извлечь из нее первый элемент. – Vityata

+0

@Vityata Я не понимаю, я хочу нажать эту кнопку через objIE.document.getElementById ("btn_edit_card _ ????????????"). Нажмите, но я понятия не имею, как использовать подстановочный знак для щелчка это – Oli

+1

, вы можете использовать '.getElementsByTagName (" a ")', а затем итерировать эту коллекцию до тех пор, пока она не станет похожей на btn_edit_card. * Посмотрите на соответствующие библиотеки, это поможет https://msdn.microsoft.com/en- us/library/ms970672.aspx и https://msdn.microsoft.com/en-us/library/aa703928(v=vs.85).aspx, и этот https://msdn.microsoft.com/en-us /library/ms536439(v=vs.85).aspx –

ответ

2

Как предложил @Nathan_Sav, очень мудро, я мог бы добавить, что вам придется работать вокруг вашей проблемы с коллекциями. Например, пропустите все теги «a», пока вы не найдете «btn_edit_card_» как часть его имени. Это будет работать, если в нем нет более «тегов» с этой фразой.

Set els = ie.Document.getElementsByTagName("a") 
    For Each el In els 
     If el.ID Like "btn_edit_card*" 
      el.click 
      Exit For 
'   Debug.Print el.ID, el.Name 
     End If 
    Next el 
2

Если ваша версия IE 9 или выше вы можете использовать querySelectorAll метод HTMLDocument класса.

Для этого используется CSS selectors, чтобы обеспечить фильтрацию элементов по их атрибутам. В вашем случае вы ищете a элементы с id, начиная с btn_edit_card. Селектор для этого будет:

a[^=btn_edit_card]

Где ^= означает начинается с.

Смотрите пример ниже код, который тянет комментарии с этой самой страницы - все они tr элементы в таблице ниже вашего вопроса, которые все имеют id из comment-123456 где число может меняться от комментариев на комментарий (потому что они хранятся исключительно в база данных и т. д.):

Option Explicit 

Sub GetElementByWildcard() 

    Dim objIe As InternetExplorer 
    Dim objDoc As HTMLDocument 
    Dim objElements As IHTMLDOMChildrenCollection 
    Dim objElement As Object 
    Dim lngCounter As Long 

    On Error GoTo ExitFunction 

    'get page content 
    Set objIe = New InternetExplorer 
    objIe.Visible = False 
    objIe.navigate "http://stackoverflow.com/questions/42225761/how-to-use-wildcard-in-excel-vba-internet-explorer" 
    Do While objIe.Busy 
     Application.Wait DateAdd("s", 1, Now) 
    Loop 

    'get document 
    Set objDoc = objIe.document 

    'get any <tr> with an id starting with comment- 
    Set objElements = objDoc.querySelectorAll("tr[id^=comment-]") 

    'iterate output 
    lngCounter = 0 
    While lngCounter < objElements.Length 
     Set objElement = objElements.Item(lngCounter) 
     Debug.Print objElement.innerText 
     lngCounter = lngCounter + 1 
    Wend 

ExitFunction: 
    If Err.Number <> 0 Then 
     Debug.Print Err.Description 
    End If 

    objIe.Quit 
    Set objDoc = Nothing 
    Set objIe = Nothing 


End Sub 

 Смежные вопросы

  • Нет связанных вопросов^_^