Oczyszczanie treści maila na przykładzie wpłaty Allegro
by vbatools 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..