我试图从网站的Excel中获得实时天气,但在VBA中不断得到不同的运行时错误?

所以我从( https://developer.worldweatheronline.com/page/explorer-free )提取信息,然后按照YouTube上的教程( https://www.youtube.com/watch?v=uo5TvtXuzJQ )怎么做。 不幸的是,当我在VBA中运行我的代码时,它会说运行时错误,我的命令button(ActiveX控件)也不会在Excel中响应,当我点击它。 我很新的VBA所以请裸露我请任何帮助,真的很感激…这是我的代码:

Private Sub btnRefresh_Click() Dim WS As Worksheet: Set WS = ActiveSheet WS.Range("theDate").Value = "" WS.Range("highTemps").Value = "" WS.Range("lowTemps").Value = "" Dim delShape As Shape For Each delShape In WS.Shapes If delShape.Type = msoAutoShape Then delShape.Delete Next delShape Dim Req As New XMLHTTP60 Req.Open "GET", "http://api.worldweatheronline.com/free/v2/weather.ashx?q=Hong%20Kong&format=XML&num_of_days=5&key=d3e0463dc48afecc7815bbf8ffb92", False Req.send Dim Resp As New DOMDocument60 Resp.LoadXML Req.responseText Dim Weather As IXMLDOMNode Dim i As Integer Dim wShape As Shape Dim thisCell As Range For Each Weather In Resp.getElementsByTagName("weather") i = i + 1 WS.Range("theDate").Cells(1, i).Value = Weather.SelectNodes("date")(0).Text WS.Range("highTemps").Cells(1, i).Value = Weather.SelectNodes("tempMaxF")(0).Text WS.Range("lowTemps").Cells(1, i).Value = Weather.SelectNodes("tempMinF")(0).Text Set thisCell = WS.Range("weatherPictures").Cells(1, i) Set wShape = WS.Shapes.AddShape(msoShapeRectangle, thisCell.Left, thisCell.Top, thisCell.Width, thisCell.Height) wShape.Fill.UserPicture Weather.SelectNodes("weatherIconUrl").Item(0).Text Next Weather End Sub 

我在Dim Resp As New DOMDocument60上面进行了这些更改。 这让我不能连接到服务器。 您可以使用此连接与您的帐户。

不要忽视Dim Req As Object的变化

 Dim WS As Worksheet: Set WS = ActiveSheet Dim strResult As String WS.Range("theDate").Value = "" WS.Range("highTemps").Value = "" WS.Range("lowTemps").Value = "" Dim delShape As Shape For Each delShape In WS.Shapes If delShape.Type = msoAutoShape Then delShape.Delete Next delShape Dim Req As Object Set Req = CreateObject("WinHttp.WinHttpRequest.5.1") Req.Open "GET", "http://api.worldweatheronline.com/free/v2/weather.ashx?q=Hong%20Kong&format=XML&num_of_days=5&key=d3e0463dc48afecc7815bbf8ffb92", False Req.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" Req.setRequestHeader "Content-type", "application/x-www-form-urlencoded" Req.send 'strResult = Req.responseText 'Worksheets("Sheet3").Range("A10:A10") = strResult Dim Resp As New DOMDocument60 

编辑:为设置usepicture的错误

看看这里 。 形状正在充满图片有点不同。 你正在声明你的形状,然后尝试做set wShape = ActiveSheet.Shapes.AddPicture

 Dim wShape As Shape Set wShape = ActiveSheet.Shapes.AddPicture(Weather.SelectNodes("weatherIconUrl").Item(0).Text, msoFalse, msoTrue, 0, 0, 100, 100) 

这是假设Weather.SelectNodes(“weatherIconUrl”)。Item(0).Text具有图片的path。 你会想validation。