vba - VBA 中的 getElementsByName
问题描述
使用以下代码将 Excel 中的数据输入 Web 浏览器时遇到问题。他向我报告错误号 438,我不知道如何解决。错误出现在这里:
iframeDoc.getElementsByName("matbr").Value = Range("a2").Value
这是我的完整代码:
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
我在网上搜索了解决方案,但我无法修复错误。
我尝试设置循环,但没有任何条目。
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
解决方案
我找到了解决办法,谢谢大家!这是正确的代码:
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
推荐阅读
- python - 很少出现时如何搜索第一个正则表达式?
- python - 在 Pong 中弹跳球靠墙和桨
- python - 生成多边形以填充图像
- javascript - Jquery从ajax调用中获取文件名
- r - ggplot:将ylab旋转并重新定位到中间
- javascript - ReactJS如何验证所有输入然后提交
- php - 成功提交表单,但控制台出现一个错误,例如 A Database Error Occurred Error Number: 1048 - Codeigniter
- arrays - 查找 MongoDb 文档中数组中第一个位置的所有不同值
- java - 如何使这个算法变得懒惰?(爪哇)
- javascript - 将值从一个输入字段传递到另一个