Excel 由javascript生成的vba getElementById
我目前正试图在下一页下载div的值:这个div值是用javascript生成的。有人能告诉我是否可以下载用VBA的javascript生成的值吗 这是我的代码:Excel 由javascript生成的vba getElementById,excel,vba,dom,web-scraping,Excel,Vba,Dom,Web Scraping,我目前正试图在下一页下载div的值:这个div值是用javascript生成的。有人能告诉我是否可以下载用VBA的javascript生成的值吗 这是我的代码: Sub Basics_Of_Web_Macro() Dim myIE As Object Dim myIEDoc As Object Set myIE = CreateObject("InternetExplorer.Application") myIE.Visible = True m
Sub Basics_Of_Web_Macro()
Dim myIE As Object
Dim myIEDoc As Object
Set myIE = CreateObject("InternetExplorer.Application")
myIE.Visible = True
myIE.navigate "http://www.banrep.gov.co/es/tasa-cambio-del-peso-colombiano-trm"
While myIE.Busy
DoEvents
Wend
Set myIEDoc = myIE.document
MsgBox myIEDoc.Title
MsgBox myIEDoc.getElementById("div_datos").innerText
End Sub
页面使用另一个url获取该内容。您可以将响应中的值正则化。您可以根据用例更多地概括正则表达式 试试正则表达式 正则表达式解释:
页面使用另一个url获取该内容。您可以将响应中的值正则化。您可以根据用例更多地概括正则表达式 试试正则表达式 正则表达式解释:
顺便说一句,完全可以获得该值。Sub Basics\u Of_Web\u Macro()Dim myIE As Object Dim myIEDoc As Object Set myIE=CreateObject(“InternetExplorer.Application”)myIE.Visible=True myIE.navigate“”虽然myIE.Busy DoEvents Wend Set myIEDoc=myIE.document MsgBox myIEDoc.Title MsgBox myIEDoc.getElementById(“div_datos”).innerText End子这是我的代码,但当我试图获取div的值时,它会发送一个错误BTW,完全有可能获取该值Dim myIE As Object Dim myIEDoc As Object Set myIE=CreateObject(“InternetExplorer.Application”)myIE.Visible=True myIE.navigate“”,而myIE.Busy DoEvents Wend Set myIEDoc=myIE.document MsgBox myIEDoc.Title MsgBox myIEDoc.getElementById(“div_datos”).innerText End子项这是我的代码,但当我尝试获取div的值时,它会发送一个错误。现在我有一个类似的问题,我正在尝试选择此页()的下拉列表(tipo de cambio)的一个选项,但我无法执行此操作,有一些方法可以执行此操作,这些控件是用JavaScription生成的,稍后将查看。现在吃晚饭的时候,你想用那新的一页做什么?就javascript在该页面上运行而言,您是正确的,因此您需要留出足够的时间让javascript消失。尝试不同的等待条件,例如微调器元素消失或另一个元素出现,或者节点列表的长度更长。。。。看看什么有效。。。。如果仍然无法让它工作,用你的代码发布一个新问题,并在这里删除该问题的链接。现在我有一个类似的问题,我正在尝试选择此页面()的下拉列表(tipo de cambio)的一个选项,但我做不到,有一些方法可以做到,这些控件是用JavaScription生成的,稍后将查看。现在吃晚饭的时候,你想用那新的一页做什么?就javascript在该页面上运行而言,您是正确的,因此您需要留出足够的时间让javascript消失。尝试不同的等待条件,例如微调器元素消失或另一个元素出现,或者节点列表的长度更长。。。。看看什么有效。。。。如果仍然无法让它工作,用你的代码发布一个新问题,并在这里删除问题的链接。
Option Explicit
Public Sub Test()
Dim s As String, re As Object, p As String
p = "new Array\(.*, ""\d+,\d+"",""(\d+\.\d+,\d+)""\);"
Set re = CreateObject("VBScript.RegExp")
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", "http://obieebr.banrep.gov.co/analytics/saw.dll?Go&path=%2Fshared%2fSeries%20Estad%c3%adsticas_T%2F1.%20Tasa%20de%20Cambio%20Peso%20Colombiano%2F1.1%20TRM%20-%20Disponible%20desde%20el%2027%20de%20noviembre%20de%201991%2F1.1.6.TCM_TRM%20para%20un%20d%C3%ADa&lang=es&options=rdf&NQUser=publico&NQPassword=publico", False
.send
s = .responseText
Debug.Print GetValue(re, s, p)
End With
End Sub
Public Function GetValue(ByVal re As Object, inputString As String, ByVal pattern As String) As String
With re
.Global = True
.MultiLine = True
.IgnoreCase = False
.pattern = pattern
If .Test(inputString) Then
GetValue = .Execute(inputString)(0).SubMatches(0)
Else
GetValue = "Not found"
End If
End With
End Function