Informatie uit mail ophalen

Status
Niet open voor verdere reacties.

Panelmen

Gebruiker
Lid geworden
21 dec 2019
Berichten
7
Hey allemaal,

Situatie is als volgt: ik krijg offerte-aanvragen door via een webformulier met standaard velden (zie bijlage).
Met deze informatie maak ik dan in excel een offerte op, waarbij ik in de hoofding bijvoorbeeld cellen 'naam', 'e-mailadres' en 'GSM-nummer' moet invullen.
Ik vroeg me af of er een manier is om dit te automatiseren via VBA in outlook of excel, waarbij het programma zelf in cel vb. 'A1', de waarde die in de mail op de lijn onder 'Naam' staat ophaalt en in de gekozen cel invult (dus in dit geval cel A1 vult met 'Test Subject').

Alle hulp is welkom, ik ben wel vertrouwd met VBA binnen excel maar heb helaas geen idee hoe ik dit in outlook moet 'verwoorden'!
 

Bijlagen

  • Voorbeeld form.png
    Voorbeeld form.png
    15,3 KB · Weergaven: 50
Laatst bewerkt:
Kan je je mail eens als bijlage plaatsen, ik wil kijken naar de onderliggende structuur.
Het kan zijn dat je het bestand een andere extensie moet geven voordat je het kan uploaden, of je kan het ook zippen.
 
Laatst bewerkt:
Bij deze een poging, laat maar weten of dit is wat je bedoelt!
Dit is een mail die automatisch verzonden wordt vanaf de website, en geopend wordt in Outlook.
 

Bijlagen

Laatst bewerkt:
Het zip-bestand is helaas leeg.
 
Excuses, was upload vanaf GSM en is blijkbaar als afbeelding geregistreerd!
Bij deze is de bijlage in vorig bericht aangepast, en zou deze dus moeten werken.
Alvast bedankt voor het geduld!
 
Ik heb wel zo'n routine voor je liggen, maar die is uiteraard toegespitst op een specifieke situatie. Daarbij staan de mails in een vaste map, die dan in zijn geheel wordt uitgelezen. Je pakt dus elke mail in die folder op en leest hem in. Op basis van specifieke alinea's in de tekst bepaal je dan of een regel wel of niet naar het Excel bestand moet. Maar dan is het wel handig om dast Excel bestand er ook bij te hebben :).
 
In bijlage het Excel-bestand!
Ik heb een groot deel van de meer vertrouwelijke velden leeggemaakt, dus er zullen misschien een aantal dingen niet werken (ik heb het ook zelf samengeflanst en ben nog een VBA-novice).
De velden die ingevuld moeten worden staan op blad 'temp' (het werkblad dat automatisch opent als je het document opent), de velden zijn 'naam', 'e-mailadres' etc (spreekt voor zich vermoed ik).
 

Bijlagen

Ik zie geen kolom 'email-adres', om maar eens wat te noemen :). Wél art. nr, omschrijving, mutatie en naam. En die kom ik dan (op naam na) niet tegen in je voorbeeld mail. Wellicht verkeerde bestand?
 
Het gaat niet om kolommen die ingevuld moeten worden, maar cellen.
Op werkblad 'Temp' (niet werkblad 'Mutaties') staan cellen 'Naam', 'Straat + nr', 'Post', 'Plaatsnaam', 'GSM-nummer' en 'e-mailadres'.
Deze informatie dient dan uit de openstaande mail (die het ingevuld formulier met deze informatie bevat) opgehaald te worden, waarna de rest van de offerte kan ingevuld worden.

Het gaat dus om informatie ophalen uit 1 mail (die op dat moment geopend is), en deze informatie invullen in de corresponderende cellen.
 
In module Blad1 (Temp)
Maak naambereiken in het werkblad, die overeenkomen met avNaam in de code, zie https://support.office.com/nl-nl/ar...formules-4d0f13ac-53b7-422e-afd2-abd7ff379c64
Open de mail met outlook
Code:
Option Explicit

Public Sub OpenOutlookMessageToRange()

    Dim avSleutel As Variant
    Dim avNaam As Variant
    Dim iavSleutel As Long
    Dim ioPs As Long
    Dim oOutlook As Object
    Dim oActiveWindow As Object
    Dim oCurrentItem As Object
    Dim oPs As Object
    Dim sHTML As String
    Dim sInnerText As String
    Dim sSleutel As String
    Dim sWaarde As String
    Dim sNaam As String

    avSleutel = Array("Naam : ", "E-mail : ", "Telefoon : ") 'sleutels in mail, zie "bron" van mail
    avNaam = Array("Naam", "E_mail", "Telefoon") 'naambereik in excelblad

    'haal html in open outlook e-mail
    Set oOutlook = CreateObject("Outlook.Application")
    Set oActiveWindow = oOutlook.ActiveWindow
    Set oCurrentItem = oActiveWindow.CurrentItem
    sHTML = oCurrentItem.HTMLBody

    With CreateObject("HTMLFILE")
        .Write sHTML
        Set oPs = .getelementsbytagname("p") 'pak alle <p>, zie bron van mail
        For ioPs = 0 To oPs.Length - 1
            sInnerText = oPs.Item(ioPs).innertext
            For iavSleutel = LBound(avSleutel) To UBound(avSleutel)
                sSleutel = avSleutel(iavSleutel)
                If sInnerText = sSleutel Then 'sleutel in mail is sleutel van code?
                    sWaarde = oPs.Item(ioPs + 1).innertext 'waarde is volgende <p>
                    sNaam = avNaam(iavSleutel)
                    Range(sNaam).Value = sWaarde 'schrijf waarde uit mail naar naambereik
                End If
            Next
        Next
    End With

End Sub

Bedenk een plan hoe je de sleutels in je mail kan laten oveenkomen met de namen in je excel werkblad
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan