Html 使用VBA从网站源代码更新/提取更改元素
我目前正在开发一个vba代码,从一个网站中提取一个每天更新的图形。我将每周运行此代码以获取此图表 最初,我通过引用图表的元素源代码将图表提取到Excel工作簿中:Html 使用VBA从网站源代码更新/提取更改元素,html,excel,vba,Html,Excel,Vba,我目前正在开发一个vba代码,从一个网站中提取一个每天更新的图形。我将每周运行此代码以获取此图表 最初,我通过引用图表的元素源代码将图表提取到Excel工作簿中: Sheets("Chart").Shapes.AddPicture "https://charts.website.com/c/422/charts/ClearChart_2054_980961381630.jpg" _ , msoFalse, mso
Sheets("Chart").Shapes.AddPicture "https://charts.website.com/c/422/charts/ClearChart_2054_980961381630.jpg" _
, msoFalse, msoTrue, 100, 100, 500, 600
我的问题是\u 980961381630.jpg
每天都在变化
我试图了解如何使用VBA更新\u 980961381630
,以便在运行代码时获得最新更新的表
现在我正试图使用和作为一种资源
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;">
您可以刮取当前url。如果没有要加载的动态内容,可以通过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
如果你将代码的相关部分发布到现在的样子,你会得到更好的帮助。你可以使用类似的东西来捕获图像名称。我非常喜欢这个想法。我刚刚运行了这段代码,但在行
chartLink=nodeChartLink.src
上出现了一个错误。错误为对象变量或未设置块变量
。我不确定为什么会出现这个错误,所以我必须进行一些挖掘,但我会在调试后与您联系,让您知道代码是如何工作的。谢谢如果发生这种错误,我早就预料到了。你能发布URL吗?我想这是因为网站的设置方式有点棘手。一旦你进入网站,就会有“报告”,其中包括一本图表小册子供你选择。在小册子中找到您想要的图表后,您可以“下载”该图表,该图表将打开一个新的internet explorer,其中包含我在原始帖子中提供的url。所有下载的图表都有相同的url,但元素ID不同。很抱歉,这是我应该包括在我的OP中的东西,但现在我想我的整个代码需要被废弃和重写。我再次问。你能发布网址吗?如果没有关于页面的详细信息,就无法帮助您。如果我没弄错的话,我会的。你必须抓住那个弹出窗口。下面是一个示例,说明如何做到这一点。这不是小事。