Gustav Brock
gustav at cactus.dk
Fri Jun 29 05:15:04 CDT 2012
Hi Shamil Yes: strXML = OpenURL("http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml") using API calls: <code> Private Declare Sub InternetCloseHandle Lib "wininet.dll" ( _ ByVal hInet As Long) Private Declare Function InternetOpenA Lib "wininet.dll" ( _ ByVal sAgent As String, _ ByVal lAccessType As Long, _ ByVal sProxyName As String, _ ByVal sProxyBypass As String, _ ByVal lFlags As Long) _ As Long Private Declare Function InternetOpenUrlA Lib "wininet.dll" ( _ ByVal hOpen As Long, _ ByVal sUrl As String, _ ByVal sHeaders As String, _ ByVal lLength As Long, _ ByVal lFlags As Long, _ ByVal lContext As Long) _ As Long Private Declare Sub InternetReadFile Lib "wininet.dll" ( _ ByVal hFile As Long, _ ByVal sBuffer As String, _ ByVal lNumBytesToRead As Long, _ ByRef lNumberOfBytesRead As Long) Public Function OpenURL( _ ByVal URL As String, _ Optional ByVal OpenType As Long) _ As String Const IOTPreconfig As Long = 0 Const IOTDirect As Long = 1 Const IOTProxy As Long = 3 Const INET_RELOAD = &H80000000 Dim hInet As Long Dim hURL As Long Dim Buffer As String * 2048 Dim Bytes As Long Select Case OpenType Case IOTPreconfig, IOTDirect, IOTProxy ' OK Case Else Exit Function End Select 'Inet-Connection öffnen: hInet = InternetOpenA(vbNullString, OpenType, vbNullString, vbNullString, 0) hURL = InternetOpenUrlA(hInet, URL, vbNullString, 0, INET_RELOAD, 0) 'Daten sammeln: Do InternetReadFile hURL, Buffer, Len(Buffer), Bytes If Bytes = 0 Then Exit Do OpenURL = OpenURL & Left$(Buffer, Bytes) Loop 'Inet-Connection schließen: InternetCloseHandle hURL InternetCloseHandle hInet End Function </code> I have used this to extract values from standard HTML pages, but for extensive use of xml files I would use the XML library. /gustav >>> mcp2004 at mail.ru 29-06-12 11:46 >>> Hi Gustav -- Do you mean downloading and parsing source XML byte by byte? * Thank you. -- Shamil Fri, 29 Jun 2012 11:42:46 +0200 ** "Gustav Brock" <gustav at cactus.dk>: Hi Shamil "naive-hardcoder" ... he he, quick and dirty, next step would be to just download the xml-string and parse it. /gustav >>> mcp2004 at mail.ru 29-06-12 11:07 >>> Hi All -- Here is my final code sample for the subject task - I'd call it "naive-hardcoder" approach: Public Sub TestMe1() Dim uri As String uri = "http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml" Dim xmlDoc As New MSXML2.DOMDocument30 xmlDoc.async = False xmlDoc.Load (uri) Dim xml As String xml = xmlDoc.DocumentElement.xml Dim pos1 As Integer Dim pos2 As Integer Dim currencyCode As String currencyCode = "RUB" pos1 = InStr(xml, "currency=""" + currencyCode) pos1 = InStr(pos1, xml, "rate=""") pos1 = InStr(pos1 + 1, xml, """") pos2 = InStr(pos1 + 1, xml, """") Dim currencyRate As String currencyRate = Mid(xml, pos1 + 1, pos2 - pos1 - 1) Debug.Print "EUR/" + currencyCode + " => " + currencyRate End Sub Thank you. -- Shamil