Export specifieke data van een outlook mailtje naar Excel

Status
Niet open voor verdere reacties.

Roeland035

Gebruiker
Lid geworden
30 mrt 2015
Berichten
291
Beste forumleden,

Wij krijgen offertes binnen via de mail, waarvan wij de gegevens invullen in een configuratieblad voor onze producten.
In deze mail staan standaard twee tabellen.

Company Name: MECATHERM
First name: Yves
Last name: PRUVOST

Op de bovenstaande manier zijn de tabellen ingericht. Heel basic zoals je ziet. Nu is mijn doel om deze informatie te exporteren naar Excel. Er staat nog meer informatie in het mailtje, maar ik heb alleen de gegevens van de tabel nodig, dus alleen MECATHERM, Yves en PRUVOST in dit geval.
Ik heb nu een Outlook VBA code die een folder bekijkt van Outlook en vervolgens een Excel bestand aanmaakt en automatisch headers creëert. Deze headers staan onder elkaar in kolom A en de data van het mailtje (MECATHERM, Yves en PRUVOST) moet er achter komen te staan in kolom B.

De code die ik nu heb pakt alleen de hele body van 't emailtje en stopt alles in Cell B2. Ik vraag mij nu af hoe ik kan zoeken in het mailtje naar bijvoorbeeld "Company Name" en dat hij dan de tekst die daar achter staat in excel zet achter de juiste header.

Heeft iemand ideeën?

Dit is mijn code dusver:
Code:
Sub Extract()
 On Error Resume Next
 
 Set myOlApp = Outlook.Application
 Set mynamespace = myOlApp.GetNamespace("mapi")
 Set myfolder = myOlApp.ActiveExplorer.CurrentFolder
 
Set xlobj = CreateObject("excel.application.14")
 xlobj.Visible = True
 xlobj.Workbooks.Add
 xlobj.Worksheets("Blad1").Name = "Offerte"
 
'Set the header
 xlobj.Range("a" & 1).Value = "Company Name"
    xlobj.Range("a" & 1).Font.Bold = "True"
    xlobj.Range("a" & 1).Font.Size = 20
 xlobj.Range("a" & 3).Value = "Company name:"
    xlobj.Range("a" & 3).Font.Bold = "True"
 xlobj.Range("a" & 4).Value = "First name:"
    xlobj.Range("a" & 4).Font.Bold = True
 xlobj.Range("a" & 5).Value = "Last name:"
    xlobj.Range("a" & 5).Font.Bold = True
 xlobj.Range("a" & 6).Value = "Job Title:"
    xlobj.Range("a" & 6).Font.Bold = True
 xlobj.Range("a" & 7).Value = "Street Address / Number:"
    xlobj.Range("a" & 7).Font.Bold = True
 xlobj.Range("a" & 8).Value = "Zip / Postal code / City:"
    xlobj.Range("a" & 8).Font.Bold = True
 xlobj.Range("a" & 9).Value = "Country:"
    xlobj.Range("a" & 9).Font.Bold = True
xlobj.Range("a" & 10).Value = "Telephone:"
    xlobj.Range("a" & 10).Font.Bold = True
xlobj.Range("a" & 11).Value = "Email Address:"
    xlobj.Range("a" & 11).Font.Bold = True
xlobj.Range("a" & 12).Value = "Website:"
    xlobj.Range("a" & 12).Font.Bold = True
xlobj.Range("a" & 13).Value = "Deliver Street Address / Number:"
    xlobj.Range("a" & 13).Font.Bold = True
xlobj.Range("a" & 14).Value = "Deliver Zip / Postal code / City:"
    xlobj.Range("a" & 14).Font.Bold = True
xlobj.Columns("A:A").AutoFit

For i = 1 To myfolder.Items.Count
  Set myitem = myfolder.Items(i)
  msgtext = myitem.Body
   
  xlobj.Range("b" & i + 1).Value = myitem.To

 'Next
Final:
 End Sub
 
Ik neem aan dat die voorbeeld gegevens in de mail body staan dus kan je dat extraheren uit myitem.Body.
 
Ik neem aan dat die voorbeeld gegevens in de mail body staan dus kan je dat extraheren uit myitem.Body.

Het gegeven voorbeeld is inderdaad een onderdeel van de mail body. Maar hoe bedoel je het extraheren uit myitem.Body precies?
Ik heb redelijk kennis over Excel VBA maar dit is de eerste keer dat ik de VBA in Outlook gebruik.
 
Die myitem.Body is niks anders dan een String en daarin kan je gewoon zoeken naar de gewenste tekst om het juiste gedeelte eruit te kopiëren en in de juiste cel van het Excel document te plaatsen.
 
Die myitem.Body is niks anders dan een String en daarin kan je gewoon zoeken naar de gewenste tekst om het juiste gedeelte eruit te kopiëren en in de juiste cel van het Excel document te plaatsen.

En dat is precies mijn probleem, hehe. Ik weet niet hoe ik moet zoeken in die string. Ik heb soortgelijke stukjes code gevonden op het internet, maar geen van allen weet ik werkende te krijgen.

Code:
For i = 1 To myfolder.Items.Count
  Set myitem = myfolder.Items(i)
  msgtext = myitem.Body

      Set Reg1 = New RegExp
    
    ' \s* = invisible spaces
    ' \d* = match digits
    ' \w* = match alphanumeric
    
    With Reg1
        .Pattern = "[:]+\s*(\w*)"
        .Global = True
    End With
    If Reg1.Test(msgtext) Then
    
        Set M1 = Reg1.Execute(msgtext)
        For Each M In M1
            ' M.SubMatches(1) is the (\w*) in the pattern
            ' use M.SubMatches(2) for the second one if you have two (\w*)
         xlobj.Range("b" & i + 1).Value = M.SubMatches(1)
         
        Next

Hier doet hij in iedergeval niks mee :C
 
Je kan de Instr functie gebruiken om te zoeken in een string
https://msdn.microsoft.com/en-us/library/8460tsh1(v=vs.90).aspx

Verder heb je dan de Mid functie nodig om een gedeelte uit de string te kopiëren.

Ik ben er bijna uit!

Met de volgende code kan ik de tekst laten printen dat achter mijn opgegeven string staat. Het enige wat ik nu nog moet uitvogelen is hoe ik de geprinte tekst automatisch kan laten schalen naar het eerstvolgende woord.

Code:
For i = 1 To myfolder.Items.Count
  Set myitem = myfolder.Items(i)
  msgtext = myitem.Body
  
Dim Search1 As String
Dim Length1 As Integer
Dim Pos1 As Integer
Dim TestPos As Integer
Dim Grabbed As String

Search1 = "First name: "
    Length1 = Len(Search1)
TestPos = InStr(msgtext, Search1)
Pos1 = TestPos + Length1
    Grabbed = Mid(msgtext, Pos1, 10)
Debug.Print Grabbed
Next
 
En dat is precies mijn probleem, hehe. Ik weet niet hoe ik moet zoeken in die string. Ik heb soortgelijke stukjes code gevonden op het internet, maar geen van allen weet ik werkende te krijgen.

Code:
For i = 1 To myfolder.Items.Count
  Set myitem = myfolder.Items(i)
  msgtext = myitem.Body

      Set Reg1 = New RegExp
    
    ' \s* = invisible spaces
    ' \d* = match digits
    ' \w* = match alphanumeric
    
    With Reg1
        .Pattern = "[:]+\s*(\w*)"
        .Global = True
    End With
    If Reg1.Test(msgtext) Then
    
        Set M1 = Reg1.Execute(msgtext)
        For Each M In M1
            ' M.SubMatches(1) is the (\w*) in the pattern
            ' use M.SubMatches(2) for the second one if you have two (\w*)
         xlobj.Range("b" & i + 1).Value = M.SubMatches(1)
         
        Next

Hier doet hij in iedergeval niks mee :C

Dit werkt wel en is zelfs heel effectief. MAAR, dan moet je wel het juiste patroon instellen ;) Ik gebruik zelf erg graag regular expressions voor dit soort dingen, maar het juiste patroon instellen moet je wel even tijd voor geven
 
Dit werkt wel en is zelfs heel effectief. MAAR, dan moet je wel het juiste patroon instellen ;) Ik gebruik zelf erg graag regular expressions voor dit soort dingen, maar het juiste patroon instellen moet je wel even tijd voor geven

Hmm... wat doe ik nu dan precies fout met mijn patroon? Ik wil zeg maar het eerst woord na "First name:" pakken en die vervolgens met xlobj.Range("b" & i + 1).Value = "" in Excel plakken.
Ik neem aan dat ik allereerst het patroon moet veranderen naar .Pattern = "First Name[:]+\s*(\w*)" of klopt het dan nog steeds niet?
 
Laatst bewerkt:
klopt. ik zou dan wel via een breakpoint in VBA testen of de code wel wordt uitgevoerd.

voor bovenstaande code moet wel de regex extensie worden aangezet

Code:
Set Reg1 = New RegExp

anders:

Code:
Set Reg1 = CreateObject("vbscript.regexp")

ook moet je ignorecase aanzetten: .ignorecase=true in het with-blok
 
klopt. ik zou dan wel via een breakpoint in VBA testen of de code wel wordt uitgevoerd.

voor bovenstaande code moet wel de regex extensie worden aangezet

Code:
Set Reg1 = New RegExp

anders:

Code:
Set Reg1 = CreateObject("vbscript.regexp")

ook moet je ignorecase aanzetten: .ignorecase=true in het with-blok

Code:
      Set Reg1 = New RegExp

    
        ' \s* = invisible spaces
        ' \d* = match digits
        ' \w* = match alphanumeric

    With Reg1
        .Pattern = "[:]+\s*\s*(\w*)"
        .IgnoreCase = True
        .Global = True
    End With
    
    If Reg1.Test(sText) Then
        Set M1 = Reg1.Execute(sText)
        For Each Match In M1
            If Match.SubMatches.Count > 0 Then
                For Each subMatch In Match.SubMatches
                    ' M.SubMatches(1) is the (\w*) in the pattern
                    ' use M.SubMatches(2) for the second one if you have two (\w*)
                    Debug.Print subMatch
                Next subMatch
            End If
        Next
    End If
End Sub

Het werkt! Bedankt :)

Dit print alle informatie dat ik nodig heb. Nu moet ik waarschijnlijk voor elke attribuut een eigen patroon aanmaken om elke stukje tekst een aparte plaats toe te kennen in Excel.
 
Ik denk dat dit voldoende is:

Code:
Sub M_snb()
   With GetObject("G:\OF\orders.xlsx")
        For Each it In ActiveExplorer.CurrentFolder.items
           sn = Split(it.body, vbLf)
           .Sheets(1).Cells(1, 2).Resize(UBound(sn) + 1) = .Application.Transpose(sn)
        Next
    Next
    .Visible = True
 End Sub

Maak een Exceldocument en sla het op als orders.xlsx.
Pas het pad in de macro aan en laat hem in Outlook lopen.
 
Ik denk dat dit voldoende is:

Code:
Sub M_snb()
   With GetObject("G:\OF\orders.xlsx")
        For Each it In ActiveExplorer.CurrentFolder.items
           sn = Split(it.body, vbLf)
           .Sheets(1).Cells(1, 2).Resize(UBound(sn) + 1) = .Application.Transpose(sn)
        Next
    Next
    .Visible = True
 End Sub

Maak een Exceldocument en sla het op als orders.xlsx.
Pas het pad in de macro aan en laat hem in Outlook lopen.

Als ik hier zo naar kijk dan plak je dus de gehele body in een leeg excel blad en wordt de tekst vervolgens in elke cel apart geplaatst?

Daarnaast staat er wel een foutje in. De tweede Next moet End With zijn. Maar zelfs dan krijg ik nog errors binnen over .Visible = True en de Application.Transpose lijn.

Werkte dit wel bij jou, of heb je het uit de losse pols getikt?
 
Ik heb toch nog wat kleine probleempjes met het totaal van mijn code. Momenteel doet hij wat ik vraag en vult hij de gegevens in, in een voorgeselecteerd Excel-bestand. Zodra ik dit bestand sluit dan lijkt het alsof de macro niet volledig is afgesloten. Toch kan ik hem weer herstarten en van alles doen, maar zodra ik hem weert een tweede keer start, dan geeft hij een foutmelding "Fout 1004 tijdens uitvoering: Door de toepassing of door object gedefinieerde fout" terwijl hij bij de eerste keer geen problemen gaf. Daarnaast heb ik het idee dat hij zo nu en dan zelf een Excel bestand wilt openen, zonder dat ik de macro achteraf meer aanraak...
Hij geeft die foutmelding over de volgende regel
Code:
xlobj.Sheets("General").Range("E6").Value = subMatch

Zou er misschien een fout zitten in het openen van het Excel bestand? Daarnaast denk ik dat mijn code vele mate korter en beter kan. hehe.

Code:
Sub Extract()

Dim sText As String
Dim currentExplorer As Explorer
Dim Selection As Selection
Dim olItem As Outlook.MailItem
Dim xlobj As Object
Dim sourceWB As Workbook

 Set olItem = Application.ActiveExplorer().Selection(1)
 
    Set xlobj = CreateObject("Excel.Application")
        With xlobj
            .Visible = True
            .EnableEvents = False
        End With
        
    strFile = "C:\Users\r.vanhouten\Documents\Specifications mk1 XXXXXXX rev -"
    
    Set sourceWB = Workbooks.Open(strFile, False, False)
    sourceWB.Activate
    sText = olItem.Body
    
      Set Reg1 = New RegExp
        ' \s* = invisible spaces
        ' \d* = match digits
        ' \w* = match alphanumeric

For i = 1 To 21
    With Reg1
    .IgnoreCase = True
    .Global = True
    Select Case i

        'Conveyor type'
        Case 1
        .Pattern = "Conveyor type:+\s*\s*(\w*)"
        
        'Product type'
        Case 2
        .Pattern = "Product type:+\s*\s*(\w*)"

        'Minimum product size'
        Case 3 'MinPS Length'
        .Pattern = "Minimum product size:+\s*\s*(\w*)"
        Case 4 'MinPS Width'
        .Pattern = "Minimum product size:+\s*\s*\w*\s*x\s*(\w*)"
        Case 5 'MinPS Height'
        .Pattern = "Minimum product size:+\s*\s*\w*\s*x\s*\w*\s*x\s*(\w*)"
               
        'Maximum product size'
        Case 6 'MaxPS Length'
        .Pattern = "Maximum product size:+\s*\s*(\w*)"
        Case 7 'MaxPS Width'
        .Pattern = "Maximum product size:+\s*\s*\w*\s*x\s*(\w*)"
        Case 8 'MaxPS Height'
        .Pattern = "Maximum product size:+\s*\s*\w*\s*x\s*\w*\s*x\s*(\w*)"
        
        'Capacity (products/hour)'
        Case 9
        .Pattern = "Capacity:+\s*\s*(\w*)"
      
        'Minimum product weight (kg)'
        Case 10
        .Pattern = "Minimum product weight:+\s*\s*(\w*)"

        'Maximum product weight (kg)'
        Case 11
        .Pattern = "Maximum product weight:+\s*\s*(\w*)"
        
        'Product in feed height (mm)'
        Case 12
        .Pattern = "Product in feed height:+\s*\s*(\w*)"
        
        'Product out feed height (mm)'
        Case 13
        .Pattern = "Product out feed height:+\s*\s*(\w*)"
        
        'Elevate or descend choice'
        Case 14
        .Pattern = "Elevate or descend choice:+\s*\s*(\w*)"
        
        'Conveyor included? (yes/no)'
        Case 15
        .Pattern = "Conveyor included+\s*\s*(\w*)"
        
        'Safety fencing included? (yes/no)'
        Case 16
        .Pattern = "Safety fencing included? (Securyfence)+\s*\s*(\w*)"
        
        'Safety fencing material'
        Case 17
        .Pattern = "Safety fencing material:+\s*\s*(\w*)"
        
        'Safety fencing with door? (yes/no)
        Case 18
        .Pattern = "Safety fencing with door? (Securyfence)+\s*\s*(\w*)"
        
        'Safety fencing door with safety switch? (yes/no)'
        Case 19
        .Pattern = "Safety fencing door with safety switch? (Schmersal AZ16)+\s*\s*(\w*)"
        
        'Vertical conveyor area'
        Case 20
        .Pattern = "Vertical conveyor area:+\s*\s*(\w*)"
        
        'Material'
        Case 21
        .Pattern = "Material:+\s*\s*(\w*)"
        End Select
              
    End With
    
    If Reg1.Test(sText) Then
        Set M1 = Reg1.Execute(sText)
        For Each Match In M1
                For Each subMatch In Match.SubMatches
                    If i = 1 Then
                        xlobj.Sheets("General").Range("E6").Value = subMatch
                        GoTo NotAvailable
                        ElseIf i = 2 Then
                            'xlobj.Sheets("General").Range("E6").Value = subMatch
                            GoTo NotAvailable
                        ElseIf i = 3 Then
                            xlobj.Sheets("Configuration").Range("C25").Value = subMatch
                            GoTo NotAvailable
                        ElseIf i = 4 Then
                            xlobj.Sheets("Configuration").Range("D25").Value = subMatch
                            GoTo NotAvailable
                        ElseIf i = 5 Then
                            xlobj.Sheets("Configuration").Range("E25").Value = subMatch
                            GoTo NotAvailable
                        ElseIf i = 6 Then
                            'xlobj.Sheets("Configuration").Range("E25").Value = subMatch
                            GoTo NotAvailable
                        ElseIf i = 7 Then
                            'xlobj.Sheets("Configuration").Range("E25").Value = subMatch
                            GoTo NotAvailable
                        ElseIf i = 8 Then
                            'xlobj.Sheets("Configuration").Range("E25").Value = subMatch
                            GoTo NotAvailable
                        ElseIf i = 9 Then
                            xlobj.Sheets("General").Range("E14").Value = subMatch
                            GoTo NotAvailable
                        ElseIf i = 10 Then
                            xlobj.Sheets("Configuration").Range("F25").Value = subMatch
                            GoTo NotAvailable
                        ElseIf i = 11 Then
                            'xlobj.Sheets("Configuration").Range("E25").Value = subMatch
                            GoTo NotAvailable
                        ElseIf i = 12 Then
                            xlobj.Sheets("Configuration").Range("C7").Value = subMatch
                            GoTo NotAvailable
                        ElseIf i = 13 Then
                            xlobj.Sheets("Configuration").Range("C8").Value = subMatch
                            GoTo NotAvailable
                        ElseIf i = 14 Then
                            'xlobj.Sheets("Configuration").Range("E25").Value = subMatch
                            GoTo Done
                        ElseIf i = 15 Then
                            'xlobj.Sheets("Configuration").Range("E25").Value = subMatch
                            GoTo NotAvailable
                        ElseIf i = 16 Then
                            'xlobj.Sheets("Configuration").Range("E25").Value = subMatch
                            GoTo NotAvailable
                        ElseIf i = 17 Then
                            'xlobj.Sheets("Configuration").Range("E25").Value = subMatch
                            GoTo NotAvailable
                        ElseIf i = 18 Then
                            'xlobj.Sheets("Configuration").Range("E25").Value = subMatch
                            GoTo NotAvailable
                        ElseIf i = 19 Then
                            'xlobj.Sheets("Configuration").Range("E25").Value = subMatch
                            GoTo NotAvailable
                        ElseIf i = 20 Then
                            'xlobj.Sheets("Configuration").Range("E25").Value = subMatch
                            GoTo NotAvailable
                        ElseIf i = 21 Then
                            'xlobj.Sheets("Configuration").Range("E25").Value = subMatch
                            GoTo Done
                        Else
                    End If
                Next subMatch
        Next Match
    End If
NotAvailable:
Next i
Done:
Set Reg1 = Nothing
MsgBox "I´m done"
End Sub

In de code zie je dat hij bij sommige cases eenzelfde cel in zijn waarde wilt aanpassen. Ik heb deze rijen momenteel nog geen cel kunnen toekennen dus is er momenteel een commentaar regel van gemaakt.
 
Laatst bewerkt:
Ik ken de inhoud van jouw emails niet, dus daar kan ik de code niet mee testen.
Voer de macro stapsgewijs uit - F8 - en bekijk of Ubound(sn) groter is dan -1.
Indien niet vervang dan vbLf door vbCr.
Code:
Sub M_snb()
   With GetObject("G:\OF\orders.xlsx")
        For Each it In ActiveExplorer.CurrentFolder.items
           sn = Split(it.body, vblf)
           .Sheets(1).Cells(1, 2).Resize(UBound(sn) + 1) = .Application.Transpose(sn)
        Next
    Next
    .application.Visible = True
 End Sub

En het lijkt me slimmer de folder met de items (bijv. een subfolder van 'Postin') expliciet te benoemen. bijv.
Code:
Sub M_snb()
   With GetObject("G:\OF\orders.xlsx")
        For Each it In GetNamespace("MAPI").GetDefaultFolder(6).Folders("xx").items
           sn = Split(it.body, vblf)
           .Sheets(1).Cells(1, 2).Resize(UBound(sn) + 1) = .Application.Transpose(sn)
        Next
    Next
    .application.Visible = True
 End Sub
 
Laatst bewerkt:
je moet je objecten wel netjes opruimen.
Code:
xlobj.close
xlobj = nothing
sourceWB=nothing

Code:
    Set sourceWB = Workbooks.Open(strFile, False, False)

is ook dodgy. hij gebruikt nu applications.workbook. je wil eigenlijk zeker weten dat je de nieuwe instance gebruikt

Code:
    Set sourceWB = xlobj.Open(strFile, False, False)

kan allemaal bijdragen aan gevonden effect
 
Code:
    Set sourceWB = Workbooks.Open(strFile, False, False)

is ook dodgy. hij gebruikt nu applications.workbook. je wil eigenlijk zeker weten dat je de nieuwe instance gebruikt

Code:
    Set sourceWB = xlobj.Open(strFile, False, False)

kan allemaal bijdragen aan gevonden effect

Hij geeft de volgende fout over de bovenstaande wijziging: Fout 438 tijdens uitvoering: Deze eigenschap of methode wordt niet ondersteund door dit object. Ik weet het helaas niet zo 123 op te lossen.
 
Ik ken de inhoud van jouw emails niet, dus daar kan ik de code niet mee testen.
Voer de macro stapsgewijs uit - F8 - en bekijk of Ubound(sn) groter is dan -1.
Indien niet vervang dan vbLf door vbCr.
Code:
Sub M_snb()
   With GetObject("G:\OF\orders.xlsx")
        For Each it In ActiveExplorer.CurrentFolder.items
           sn = Split(it.body, vblf)
           .Sheets(1).Cells(1, 2).Resize(UBound(sn) + 1) = .Application.Transpose(sn)
        Next
    Next
    .application.Visible = True
 End Sub

En het lijkt me slimmer de folder met de items (bijv. een subfolder van 'Postin') expliciet te benoemen. bijv.
Code:
Sub M_snb()
   With GetObject("G:\OF\orders.xlsx")
        For Each it In GetNamespace("MAPI").GetDefaultFolder(6).Folders("xx").items
           sn = Split(it.body, vblf)
           .Sheets(1).Cells(1, 2).Resize(UBound(sn) + 1) = .Application.Transpose(sn)
        Next
    Next
    .application.Visible = True
 End Sub

Beste snb,

Ik heb je code werkende gekregen in mijn omgeving met de volgende aanpassingen:

Code:
Sub M_snb()
Dim GrabExcel As Object

Set GrabExcel = GetObject("C:\Users\r.vanhouten\Documents\Specifications mk1 XXXXXXX rev -.xlsx")
   With GrabExcel
        For Each it In GetNamespace("MAPI").GetDefaultFolder(6).Folders("Offertes").Items
           sn = Split(it.Body, vbLf)
           .Sheets("Email Data").Cells(1, 2).Resize(UBound(sn) + 1) = .Application.Transpose(sn)
        Next
    End With
 End Sub

Nu pakt hij echt alles van het mailtje en zet hij elk stukje string op een aparte regel met een witregel tussen de meeste data.
Is het ook mogelijk om alleen de data in het excel bestand over te zetten wat pas na één bepaald woord komt (Offerrerequest)? Zodat ik alleen maar de tabel data overneem.

Het woord Offerrerequest is verkeerd geschreven, maar zo komt het momenteel binnen. Klein foutje op de website.
 
Laatst bewerkt:
Kijk, dat zijn tenminste simpele vragen:

Code:
Sub M_snb()
   With GetObject("C:\Users\r.vanhouten\Documents\Specifications mk1 XXXXXXX rev -.xlsx")
        For Each it In GetNamespace("MAPI").GetDefaultFolder(6).Folders("Offertes").Items
           sn = split(Split(it.Body, "Offerrerequest")(1),vbCrLf)
           .Sheets("Email Data").Cells(1, 2).Resize(UBound(sn) + 1) = .Application.Transpose(sn)
        Next
    End With
 End Sub

Het is ook mogelijk om alle regels die je niet nodig hebt eruit te filteren ( als je de criteria daarvoor specificeert).

NB. ziet er toch wat eenvoudiger uit dan die RegEx expeditie.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan