Pobieranie danych z HTTP

Pytania, problemy, uwagi związane ze starszymi wersjami Microsoft Outlook 2003, 2002 (XP), 2000, 98

Moderator: Moderatorzy

Pobieranie danych z HTTP

Postprzez Shon Oskar » Pn 16.10.2006 09:17

Jak pozyckać danne z zewnątrz.
np wywołać adres www i pobrać wartość ze strony do przekazania jako parametr.
lub pobrać tablice do kontrolek

W excelu bardzo prosto ... w Outlooku jest to dla mnie zagadką
O'Shon
Shon Oskar
 
Posty: 182
Dołączył(a): Pn 16.10.2006 09:05
Lokalizacja: Veracomp S.A.

Postprzez michu » Pn 16.10.2006 12:43

Outlook nie udostępnia żadnych funkcji ani obiektów realizujących takie funkcje. Możesz wykorzystać do tego obiekt COM MSXML2.XMLHTTP (HttpRequest).
Pozdrawiam
Michu
michu
 
Posty: 4190
Dołączył(a): N 05.02.2006 17:49
Lokalizacja: Jelenia Góra

Postprzez Shon Oskar » Pn 16.10.2006 14:09

Super - prosze o szersze instrukcje
- gdzie moge pozyskać dodatek com (i jak go podpiąć)


jakieś instrukcje?
znalazłem coś takiego:

Private Sub VBAppExample()
Dim dom As New msxml2.DOMDocument
Dim req As New msxml2.XMLHTTP
dom.Load "c:\dltest.xml"
req.open "POST", "http://www.jakas_strona.asp", False
req.send dom
MsgBox req.responseText
Set dom = Nothing
Set req = Nothing
Unload Me
End Sub

Jednakże bex kontrolki nici z tego
O'Shon
Shon Oskar
 
Posty: 182
Dołączył(a): Pn 16.10.2006 09:05
Lokalizacja: Veracomp S.A.

Postprzez michu » Pn 16.10.2006 14:18

Powinieneś mieć już tą kontrolkę zainstalowaną w systemie. Jest to MSXML Parser (msxml.dll). Jeśli go nie masz możesz pobrać ze stronyMSXML 4.0 Service Pack 2 (Microsoft XML Core Services).

Interfejs, o którym pisałem, dokładnie nazywa się IXMLHTTPRequest, jego dokumentację znajdziesz tutaj.
Pozdrawiam
Michu
michu
 
Posty: 4190
Dołączył(a): N 05.02.2006 17:49
Lokalizacja: Jelenia Góra

Postprzez Shon Oskar » Śr 18.10.2006 10:57

Dzieki za polecenie - jakoś działa jednakże mam następne pytanie nad którym rozmyślam:
Napisany kodzik zwraca mi wielowierszową informacje w XMLu

<kontakt>
<imie>Pawell</imie>
<nazwisko>Robaczewski</nazwisko>
</kontakt>


Jak to zamienić na zmienne ?
tak aby przypisać odpowiednie wartości jako stałe w kodzie
Prosze o porade

Kod: Zaznacz cały
Sub test()
    MsgBox GetResult("http://stronaX.php")
End Sub
Function GetResult(urlStr)
  Dim xmlHttp
  Dim retStr
   
  Set xmlHttp = CreateObject("Msxml2.XMLHTTP")
  On Error Resume Next
  With xmlHttp
    .Open "POST", urlStr, False
    .setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    .Send
  End With
  If Err.Number = 0 Then
    retStr = xmlHttp.responseText
  Else
    retStr = "Strona nie została odnaleziona"
  End If
  Set xmlHttp = Nothing
  GetResult = retStr
End Function
O'Shon
Shon Oskar
 
Posty: 182
Dołączył(a): Pn 16.10.2006 09:05
Lokalizacja: Veracomp S.A.

Postprzez michu » Śr 18.10.2006 12:29

Użyj parsera z tej samej biblioteki MSXML. Załaduj do niego XMLa i potem możesz go w prosty sposób "rozbierać".

Tutaj znajdziesz dokumentację i przykłady:
What is XML DOM
Pozdrawiam
Michu
michu
 
Posty: 4190
Dołączył(a): N 05.02.2006 17:49
Lokalizacja: Jelenia Góra

Postprzez Shon Oskar » Śr 18.10.2006 14:45

Niestety na stronie przykład importuje XMLa do pamieci kontrolki
oraz przekazuje tą wartośc do Msgboxa w całości.

jak pobrać jego cześć
np: (podaje zły kod)

Kod: Zaznacz cały
Dim imie as strong
imie = GetResult("<imie>")

lub
Kod: Zaznacz cały
imie = GetResult("http://stronaX.php", "<imie>")


Prosze o podpowiedz.... :?
O'Shon
Shon Oskar
 
Posty: 182
Dołączył(a): Pn 16.10.2006 09:05
Lokalizacja: Veracomp S.A.

Postprzez michu » Śr 18.10.2006 17:32

Poniżej jest przyklad, który używa przedstawiony przez Ciebie przykładowy XML. Najpierw XML ładowany jest do dokumentu (obiektu) DOMDocument, a potem wyciągana jest z niego wartość elementu <imie> przy użyciu funkcji selectSingleNode.

Kod: Zaznacz cały
    Dim strXML As String
    strXML = "<kontakt> " & _
             "<imie>Pawell</imie>" & _
             "<nazwisko>Robaczewski</nazwisko>" & _
             "</kontakt>"

    Dim xmlDoc
    Set xmlDoc = CreateObject("MSXML2.DOMDocument")
    If Not xmlDoc.loadXML(strXML) Then
        MsgBox "Failed to load XML data."
        Exit Sub
    End If
   
    Dim strName As String
    strName = xmlDoc.selectSingleNode("//imie").TExt
   
    MsgBox strName
Pozdrawiam
Michu
michu
 
Posty: 4190
Dołączył(a): N 05.02.2006 17:49
Lokalizacja: Jelenia Góra

Postprzez OShon » Cz 19.10.2006 08:34

Bardzo dziekuje.
:D
Obrazek
Oskar Shon - MVP Office Dev. 11/20, 3x MCC, 4/9/22 TechNet
Forum moderator: Outlook.pl | ExcelForum.pl | MSDN dział VBA
Zobacz fajne dodatki: Outlooka, Excela, Worda lub PowerPointa
OShon
 
Posty: 10274
Dołączył(a): Cz 19.10.2006 08:31
Lokalizacja: Projekt autorski VBATools.pl


Powrót do Microsoft Outlook

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości