2017-04-18 119 views
1

我有这个从天气API获取天气信息的子。它适用于Windows 7计算机,但不适用于Windows 10.我收到“用户定义类型未定义”错误,并突出显示“Dim Req As New XMLHTTP”行。我试图将DOMDocument更改为DOMDocument60,并试图确保检查了MicrosoftXML V6.0。用户定义的类型未定义窗口10

Public Sub GetWeather(APIurl As String, sted As String) 

    Dim i As Integer 
    Dim ws As Worksheet: Set ws = ActiveSheet 
    Dim city As String 
    Dim omraade As String 
    Dim Req As New XMLHTTP 
    Dim Weather As IXMLDOMNode 
    Dim wShape As Shape 
    Dim thisCell As Range 
    Dim Resp As New DOMDocument60 

    i = 0 
    omraade = "" 
    omraade = sted 

    Select Case omraade 
     Case "Area1" 
      i = 4 
     Case "Area2" 
      i = 6 
     Case "Area3" 
      i = 8 
    Case Else 
     Exit Sub 
    End Select 

    Req.Open "GET", "" & APIurl & "", False 
    Req.Send 
    Resp.LoadXML Req.responseText 

    For Each Weather In Resp.getElementsByTagName("current_condition") 

     Set thisCell = ws.Range(Cells(2, i), Cells(2, i)) 
     Set wShape = ws.Shapes.AddShape(msoShapeRectangle, thisCell.Left, thisCell.Top, thisCell.Width, thisCell.Height) 

     wShape.Fill.UserPicture Weather.ChildNodes(4).Text 'img 

     Cells(3, i).Value = "" & Weather.ChildNodes(7).Text * 0.28 & " m/s" 'windspeedkmph 
     Cells(4, i).Value = Weather.ChildNodes(9).Text 'Direction 
     Cells(5, i).Value = Weather.ChildNodes(1).Text & " C" 'observation time 
    Next Weather 

End Sub 

任何想法?

+2

查找范围为缺项的项目引用。 –

回答

1

使用Microsoft XML V6.0库工具,引用正确引用,适当的呼叫,

Dim req As New MSXML2.XMLHTTP60 
+0

这是做到了。谢谢!你介意解释为什么我需要这样做吗? :) – Thomas

+1

Microsoft XML v6.0库中描述的var的'type'不是XMLHTTP,而是MSXML2.XMLHTTP60。有点儿,这是一个版本的东西。 – Jeeped