Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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

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
I';我试图从一个网站上获取excel中的实时天气,但在VBA中不断得到不同的运行时错误?_Vba_Excel_Xmlhttprequest - Fatal编程技术网

I';我试图从一个网站上获取excel中的实时天气,但在VBA中不断得到不同的运行时错误?

I';我试图从一个网站上获取excel中的实时天气,但在VBA中不断得到不同的运行时错误?,vba,excel,xmlhttprequest,Vba,Excel,Xmlhttprequest,我正在从()中获取信息,并遵循youtube()上的一个教程,该教程确切地说明了如何做到这一点。不幸的是,当我最后在VBA中运行代码时,它会显示运行时错误,而且我的命令按钮(ActiveX控件)在excel中单击时根本不会响应。这是我的代码: Private Sub btnRefresh_Click() Dim WS As Worksheet: Set WS = ActiveSheet WS.Range("theDate").Value = "" WS.Range("highTemps").V

我正在从()中获取信息,并遵循youtube()上的一个教程,该教程确切地说明了如何做到这一点。不幸的是,当我最后在VBA中运行代码时,它会显示运行时错误,而且我的命令按钮(ActiveX控件)在excel中单击时根本不会响应。这是我的代码:

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上做了这些更改,作为新的DOMDocument60
。这使我无法连接到服务器。您可以通过此连接到您的帐户

不要忽略对象
Dim Req的更改

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的错误

看一看。这个形状被图片填充的有点不同。您正在声明形状,然后尝试执行
设置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)具有图片的路径。您需要进行验证。

此外,我不应该看到,虽然红色文本在此处正确显示,但当我在VBA中执行此操作时,没有任何文本显示为红色。请阅读并阅读该页底部链接的奇妙的调试指南。哪一行代码给出了运行时错误?你到底得到了什么运行时错误?我很感激,但我不知道这些东西意味着什么…我没有VBA和一般编码的经验,所以我甚至不知道说什么才能从人们那里得到答案。我快疯了,不管我浏览了多少网页,都找不到解决方法……MatthewD:运行时错误91,它突出显示了第一行,也没有任何东西像预期的那样以红色突出显示,不确定这意味着什么,但它好像无法正确连接到网站或其他东西现在我做了更改,它会自动切换到顶部的(常规)/(声明),当我尝试运行代码时,它会提示我提供宏名称…当我切换回它时(VBA名称)/(单击)在顶部,现在运行它,我得到编译错误:无效的外部过程,现在还有一个运行时错误9:下标超出范围这可能与以下行有关:strResult=Req.responseText'工作表(“Sheet3”).Range(“A10:A10”)=strResultno,这正是我将如何写对工作表的响应。你可以评论出来。谢谢@barrowc。我不知道你把我贴的代码拿走了,没有把它放在你原来的潜水艇里。我只是贴了你的潜水艇我改了的部分。