Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 使用VBA从网站源代码更新/提取更改元素_Html_Excel_Vba - Fatal编程技术网

Html 使用VBA从网站源代码更新/提取更改元素

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

我目前正在开发一个vba代码,从一个网站中提取一个每天更新的图形。我将每周运行此代码以获取此图表

最初,我通过引用图表的元素源代码将图表提取到Excel工作簿中:

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中的东西,但现在我想我的整个代码需要被废弃和重写。我再次问。你能发布网址吗?如果没有关于页面的详细信息,就无法帮助您。如果我没弄错的话,我会的。你必须抓住那个弹出窗口。下面是一个示例,说明如何做到这一点。这不是小事。