Stuart McLachlan
stuart at lexacorp.com.pg
Mon Feb 15 16:03:59 CST 2010
If you are talking about using the URLDownloadToFile API function to get some XML into a
file, it is a bit roundabout, but it's actually not that complicated, it's very fast and it'sby far the
easiest way I've found to do it.
See example below of looking up the location of an IP address using this technique
--
Stuart
On 15 Feb 2010 at 12:19, Doug Steele wrote:
>
> Application.FollowHyperlink "
> http://api.toodledo.com/api.php?method=getToken;userid=td4b703588b0844"
>
> Then I just get an Internet Explorer window with the xml showing it it. I
> found some code on the web which gets Yahoo stock prices saves them into a
> text file, reads the file and parses it, but that seems a bit roundabout.
>
Option Compare Database
Option Explicit
Declare Function URLDownloadToFile Lib "urlmon" _
Alias "URLDownloadToFileA" _
(ByVal pCaller As Long, _
ByVal szURL As String, _
ByVal szFileName As String, _
ByVal dwReserved As Long, _
ByVal lpfnCB As Long) As Long
Const ERROR_SUCCESS As Long = 0
Const BINDF_GETNEWESTVERSION As Long = &H10
Function GetIPLoc(IP As String) As String
'Gets CountryName for an IP address from the online
'database at http://www.ipinfodb.com
Dim strSourceUrl As String
Dim strLocalFile As String
Dim hfile As Long
Dim strText As String
strLocalFile = "c:\deleteme.htm"
strSourceUrl = "http://www.ipinfodb.com/ip_query.php?ip=" _
& IP & "&output=xml"
'Get URL
If URLDownloadToFile(0&, _
strSourceUrl, strLocalFile, _
BINDF_GETNEWESTVERSION, _
0&) = ERROR_SUCCESS Then
hfile = FreeFile
'Read in data from temp file
Open strLocalFile For Binary As #hfile
strText = Space$(LOF(hfile))
Get hfile, , strText
Close #hfile
'Delete temporary file
Kill strLocalFile
Debug.Print strText
'Pares Country name out of returned XML
strText = Mid$(strText, InStr(strText, "<CountryName>") + 13)
strText = Left$(strText, InStr(strText, "</CountryName>") - 1)
GetIPLoc = strText
End If
End Function