2015-04-16 39 views
0

我正在閱讀一個可視基本代碼來自動提取一些天氣數據。以下是網頁的源代碼。使用VBA代碼從網頁提取數據

<tr><td> 
<table align="center" width="100%" summary="table used for formatting"><tr> 
<td align="center"><b>Example:</b></td> 
<td align="center" width="40%">Latitude 33.5<br>Longitude -80.75</td> 
<td align="center">OR</td> 
<td align="center" width="40%">Latitude 33 30<br>Longitude -80 45</td> 
</tr></table></td></tr> 
<tr><td><table width="100%" summary="table used for formatting"><tr> 
<td><b><label for="lat">Latitude? </label> 
<input type="text" name="lat" id="lat" size="12" value=""></b></td> 
<td width="30%">South:&nbsp;&nbsp; -90 to 0</td> 
<td width="30%">North:&nbsp;&nbsp; 0 to 90</td> 
</tr><tr> 
<td><b><label for="lon">Longitude? </label> 
<input type="text" name="lon" id="lon" size="12" value=""></b></td> 
<td width="30%">West:&nbsp;&nbsp; -180 to 0</td> 
<td width="30%">East:&nbsp;&nbsp; 0 to 180</td> 
</tr></table></td></tr> 
<tr><td><table align="center" summary="table used for formatting"><tr> 
<td><b> <input type="submit" name="submit" value="Submit"> </b></td> 
<td><b> <input type="submit" name="submit" value=" Reset "> </b></td> 
<td><i> This form is "Reset" if the input is out of range. </i></td> 
</tr></table> 
</td></tr></table> 
</form> 

我收到一個錯誤(對象變量或塊變量未設置)。有人能幫我解決這個問題嗎?非常感謝你提前。以下是我已經寫了:

Sub extractSolData() 
Dim IE As Object 
Dim latitude As String, longitude As String 


Set IE = CreateObject("InternetExplorer.Application") 

latitude = InputBox("Enter Latitude of the location") 
longitude = InputBox("Enter Longitude of the location") 

With IE 
.Visible = True 
.navigate ("https://eosweb.larc.nasa.gov/cgi-bin/sse/[email protected]") 

While IE.readyState <> 4 
DoEvents 
Wend 

IE.document.getElementsByName(「lat」).Item(0).Value = latitude 
IE.document.getElementsByName(「lon」).Item.innertext = longitude 


IE.document.getElementsByName("submit").Item.Value = "Submit" 

Do While .Busy Or _ 
.readyState <> 4 
DoEvents 
Loop 
End With 

Set IE = Nothing 

End Sub 
+0

您需要指出*確切地說*你得到的錯誤。 'getElementsByName'總是返回一個集合(即使在文檔中只有一個匹配項),所以無論何時使用它,都需要處理該集合中的一個元素。 –

+0

感謝蒂姆的提示! – user1671860

回答

1

問題是與我敢打賭,你從一個網站複製此,不知怎麼報價引號您使用的是

IE.document.getElementsByName(「lat」).Item(0).Value = latitude 
IE.document.getElementsByName(「lon」).Item.innertext = longitude 

這些都不是真正的報價,標記混亂了。他們需要看起來像

IE.document.getElementsByName("lat").Item(0).Value = latitude 
IE.document.getElementsByName("lon").Item.innertext = longitude 
+0

嗨,珍妮!感謝趕上兄弟!有效。坦率地說,我不記得從任何網站複製它們,但我使用記事本文件中的早期代碼。也許這些來自那裏。再次感謝。 – user1671860