VBATools

Oczyszczanie treści maila na przykładzie wpłaty Allegro

by on Oct.25, 2011, under Outlook, Porady

Poniżej przedstawiam jeden z najprostszych sposobów dzielenia tekstu. Wykorzystamy go  do pobrania danych z wiadomości email.
Załóżmy że mail ma postać poczty przychodzącej po sprzedaży towaru Allegro.

    • “Kupujący Nawa_kupującego zapłacił Ci za zakupy przez Płacę z Allegro.
    • Aktualne dane do zrealizowania wysyłki znajdziesz na karcie płatności w zakładce Moje Allegro > Moja Sprzedaż > Płacę z Allegro: Lista wpłat od Kupujących.
    • Możesz dokończyć transakcję i dostarczyć przedmiot (przedmioty).
    • Aukcja Nazwa tej aukcji (1234567890)

Do zapłaty 47,00 zł
W tym koszt dostawy 15,00 zł
Zapłacono 47,00 zł
Płacący klient_nazwa, jego_adres@wp.pl
Odbiorca nazwa_odbiorcy
Data 2011-10-23 21:27:14
Płatność 91398856

Adres do wysyłki Imie_klienta Nazwisko_klienta
ulica jakaś tam 16
00-001 miejscowość
Numer telefonu 601234567
Wiadomość dla Sprzedającego Brak

Przydatne informacje …….”

Gry przypiszemy go do zmiennej, możemy pociąć ją po strategicznych elementach, które potem przekażemy do pliku XLS, XML, przedstawimy w komunikacie lub zrealizujemy czynność jaka będzie naszym zamierzeniem.
Aby oddać sens przedstawionej procedury najlepiej odszukać w folderze poczty przychodzącej podobna wiadomość:

 Sub Tresc_Nowa_Wplata_Allegro() 
 'MVP OShon from VBATools.pl
 Dim oMail  As MailItem 
 Select Case TypeName(Application.ActiveWindow)
   Case "Explorer":  Set oMail = ActiveExplorer.Selection.item(1)
   Case "Inspector": Set oMail = ActiveInspector.CurrentItem
   Case Else: Exit Sub
 End Select

 Dim tekst$: tekst = oMail.Body 

 'pobieramy odcinki danych 
 Dim zap$: zap = Split(Mid(tekst, InStr(1, tekst, "Zapłacono")), vbCr)(0) 
 Dim kto$: kto = Split(Mid(tekst, InStr(1, tekst, "Płacący")), ", HYPERLINK")(0) 
 Dim mail$: mail = Split(Mid(tekst, InStr(1, tekst, "mailto:")), vbCr)(0) 
 Dim kied$: kied = Split(Mid(tekst, InStr(1, tekst, "Data")), vbCr)(0) 
 Dim adr$: adr = Split(Mid(tekst, InStr(1, tekst, "Adres do wysyłki")), "Numer")(0) 
 Dim tel$: tel = Split(Mid(tekst, InStr(1, tekst, "Numer telefonu")), vbCr)(0) 

 'oczyszczamy 
 zap = Trim(Split(zap, vbTab)(1)) 
 kto = Trim(Split(kto, vbTab)(1)) 
 mail = Trim(Split(mail, """")(1)) 
 kied = Trim(Split(kied, vbTab)(1)) 
 adr = Trim(Split(adr, vbTab)(1)) 
 tel = Trim(Split(tel, vbTab)(1)) 
 'itd...

 'sprawdzenie danych w oknie immediate [ctrl+g] 
 Debug.Print zap & vbCr & kto & vbCr & mail & vbCr & kied & vbCr & adr & vbCr & tel 

 'w tym miejscu można przypisać zmienną do komórki Excela 
 Set oMail = Nothing 
 End Sub

Przytoczone w powyższych procedurach parametry, można dowolnie edytować wykorzystując właściwości obiektu Mailitem. Dla poczty przychodzącej mamy do dyspozycji kreatora reguł i możliwość dostosowania kodu na skrypt reguły. Dzięki wzbogaceniu procedury o elementy zapisu/exportu danych możemy ustawić uruchomienie skryptu zaraz po otrzymaniu wiadomości. Opisuje to w tym artykule, a zapis danych do Excela w tym artkule.

 

(c) Shon Oskar – www.VBATools.pl

Wszelkie prawa zastrzeżone. Żadna część ani całość tego artykułu nie może być powielana ani publikowana bez zgody autora.

.

:, , , ,

Leave a Reply