我目前正在处理VBA代码,该代码是从网站上提取每天更新的图表。我将每周运行这段代码来获取这张图。
最初,我通过引用图表的元素源代码将图形提取到Excel工作簿中:
Sheets("Chart").Shapes.AddPicture "https://charts.website.com/c/422/charts/ClearChart_2054_980961381630.jpg" _
, msoFalse, msoTrue, 100, 100, 500, 600
我的问题是_980961381630.jpg
每天都在变化。
我试图了解如何使用VBA更新_980961381630
,以便在运行代码时获得最新的更新表。
现在,我正尝试使用Extracting Specific Elements VBA和Extracting Varying Element Source Code作为资源。
HTML元素源代码为:
<img chart-id="2672" alt="Chart ID 2672" class="chart-img"
src="https://charts.website.com/c/422/charts/ClearChart_2054_758170607617.jpg"
diagnostic-id="chart-img-2" style="max-height: 150px;">
答案 0 :(得分:0)
您可以抓取当前网址。如果没有要加载的动态内容,则可以使用http xml请求来完成。否则,您必须使用IE。
尝试此操作以获取http xml请求:
Sub ImportChart()
Const url As String = "https://charts.website.com/c/422/charts/" 'Page with chart
Dim xhr As Object
Dim htmlDoc As Object
Dim nodeChartLink As Object
Dim chartLink As String
'Initialize variables
Set htmlDoc = CreateObject("htmlfile")
Set xhr = CreateObject("MSXML2.ServerXMLHTTP.6.0")
'"Open" page
xhr.Open "GET", url, False
xhr.send
'Build html document for DOM operations
htmlDoc.body.innerHTML = xhr.responseText
'Get chart url
Set nodeChartLink = htmlDoc.getElementByID("2672")
chartLink = nodeChartLink.src
'Place chart in excel sheet
Sheets("Chart").Shapes.AddPicture chartLink, msoFalse, msoTrue, 100, 100, 500, 600
End Sub