Stevinho
Stevinho

Reputation: 33

getElementsByName in VBA

I have a problem with entering data from Excel into a web browser using the code below. He reports error number 438 to me and I don't know how to solve it. The error appeared here:

iframeDoc.getElementsByName("matbr").Value = Range("a2").Value

This is my full code:

Sub provera_menice()

Dim wb As Workbook
Set wb = ThisWorkbook

'Dim rgMB As Range
'Set rgMB = Application.InputBox("Izabrati MB klijenta koji se deblokira.", Type:=8)

'Dim r As Long
'Dim k As Long
'r = rgMB.Row
'k = rgMB.Column

    Dim objIE As InternetExplorer 'special object variable representing the IE browser
    Dim aEle As HTMLLinkElement 'special object variable for an <a> (link) element
 
    'initiating a new instance of Internet Explorer and asigning it to objIE
    Set objIE = New InternetExplorer
 
    'make IE browser visible (False would allow IE to run in the background)
    objIE.Visible = True
 
    'navigate IE to this web page (a pretty neat search engine really)
    objIE.navigate "https://nbs.rs/sr_RS/drugi-nivo-navigacije/servisi/duznici-pn/"
        
    'wait here a few seconds while the browser is busy
    Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop
 
    Dim ieDoc As MSHTML.HTMLDocument
    Set ieDoc = objIE.document
    
    Dim iframeDoc As MSHTML.HTMLDocument
    Set iframeDoc = ieDoc.frames(0).document
    
    'in the search box put some cell value
    'MB: <input class="form-control" name="matbr" type="text" tabindex="4" size="13" maxlength="8" value="">
    iframeDoc.getElementsByName("matbr").Value = Range("a2").Value
    
    'search: <input class="btn" type="submit" name="send" id="send" value="????????" tabindex="8">
    iframeDoc.getElementById("send").Click
    
End Sub

I searched for a solution on the net, but I can't fix the error.

I try to set loop, but nothing entry.

Set x = iframeDoc.getElementsByName("matbr")
For i = 0 To x.Length
    If x(i) = "matbr" Then
        'in the search box put some cell value
        'MB: <input class="form-control" name="matbr" type="text" tabindex="4" size="13" maxlength="8" value="">
        iframeDoc.getElementsByName("matbr").Value = Range("a2").Value
        'search: <input class="btn" type="submit" name="send" id="send" value="????????" tabindex="8">
        iframeDoc.getElementById("send").Click
    End If
    i = i + 1
Next

Upvotes: 0

Views: 1945

Answers (1)

Stevinho
Stevinho

Reputation: 33

I found a solution, thank you all! Here is the correct code:

Sub provera_menice()

Dim wb As Workbook
Set wb = ThisWorkbook

'Dim rgMB As Range
'Set rgMB = Application.InputBox("Izabrati MB klijenta koji se deblokira.", Type:=8)

'Dim r As Long
'Dim k As Long
'r = rgMB.Row
'k = rgMB.Column

    Dim objIE As InternetExplorer 'special object variable representing the IE browser
    Dim aEle As HTMLLinkElement 'special object variable for an <a> (link) element
 
    'initiating a new instance of Internet Explorer and asigning it to objIE
    Set objIE = New InternetExplorer
 
    'make IE browser visible (False would allow IE to run in the background)
    objIE.Visible = True
 
    'navigate IE to this web page (a pretty neat search engine really)
    objIE.navigate "https://nbs.rs/sr_RS/drugi-nivo-navigacije/servisi/duznici-pn/"
        
    'wait here a few seconds while the browser is busy
    Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop
 
    Dim ieDoc As MSHTML.HTMLDocument
    Set ieDoc = objIE.document
    
    Dim iframeDoc As MSHTML.HTMLDocument
    Set iframeDoc = ieDoc.frames(0).document

    iframeDoc.getElementsByName("matbr")(1).Value = Range("a2").Value
    iframeDoc.getElementById("send").Click

    Range("b4").Value = iframeDoc.getElementsByClassName("table_text cell")(5).textContent
 
End Sub

Upvotes: 1

Related Questions