Avatar billede hubertus Seniormester
15. maj 2019 - 08:10 Der er 1 kommentar

Gennemløb folder i outlook og udskriv del af bodytekst i et regneark

Jeg har brug for hjælp til at automatisere en proces, hvor jeg  fra Excel kan gennemløbe en mappe i Outlook, og udtage en del af bodyteksten, som skal skrives fortløbende i et regneark.

Jeg har brug for hjælp til et script der kan:
a.    Gennemløbe en folder i outlook
b.    Læse bodytekst og lede efter følgende nøgletekst: ”Produkt ID ”
c.    Findes  teksten, så skal det efterfølgende fortløbende skrives i et regneark
Jeg benytter office 365.
Avatar billede hubertus Seniormester
19. maj 2019 - 10:49 #1
Public Sub dev_read_unread()

Dim SubFolder As Outlook.MAPIFolder

    On Error GoTo ErrHandler
   
    Dim objOutlook As Object
    Set objOutlook = CreateObject("Outlook.Application")
    Dim myNewFolder As Variant
   
    ' CREATE AND SET A NameSpace OBJECT.
    Dim objNSpace As Object
   
    ' THE GetNameSpace() METHOD WILL REPRESENT A SPECIFIED NAMESPACE.
    Set objNSpace = objOutlook.GetNamespace("MAPI")
   
    ' CREATE A FOLDER OBJECT.
    Dim myFolder As Object
    Set myFolder = objNSpace.GetDefaultFolder(olFolderInbox)
   
    ' sætter subfolders.
    Set myNewFolder = myFolder.Folders("B Royal").Folders("B Fakse")
 
    ' skriv til ark.
    If myNewFolder = "B Fakse" Then
      Worksheets("Fakse").Select
    End If
       
    Dim Item As Object
    Dim iRows, iCols As Integer
    iRows = 2

    ' LOOP THROUGH EACH ITEMS IN THE FOLDER.
    For Each objitem In myNewFolder.Items
   
      If objitem.Class = olMail Then
       
        If objitem.UnRead = True Then
       
            Dim objmail As Outlook.MailItem
            Set objmail = objitem
       
            Dim result() As String
             
            result() = Split(objmail.Subject)
           
            If result(6) = "left" Then
              result(6) = "Afgang"
              Else
              result(6) = "Ankomst"
            End If
           
            ' skriv i ark
            Cells(iRows, 1) = result(4)
            Cells(iRows, 2) = result(6)
            Cells(iRows, 3) = result(9)
            Cells(iRows, 4) = result(10)
         
            objitem.Move objNSpace.GetDefaultFolder(olFolderInbox).Folders("B Royal").Folders("temp")
   
            objitem.UnRead = False  ' virker
                     
            iRows = iRows + 1
       
        End If
             
      End If
       
    Next
   
    Set objmail = Nothing
 
    ' RELEASE.
    Set objOutlook = Nothing
    Set objNSpace = Nothing
    Set myFolder = Nothing
   
ErrHandler:
    Debug.Print Err.Description
End Sub

Udviklingskoden virker, hvis jeg gennemløber min folder med hensyn til read /unread. Jeg har imidlertid brug for at kunne flytte de indkomne mails efterhånden, som de bliver behandlet. Det skulle gerne ske med linjen:
            objitem.Move objNSpace.GetDefaultFolder(olFolderInbox).Folders("B Royal").Folders("temp")
Den flytter imidlertid kun halvdelen  - af de mails der ligger i folderen. Tilsvarende hvis jeg beder om at få slettet de mails, som er behandlet med objitem.delete, så er det også kun halvdelen der slettes Jeg kan ikke gennemskue hvorfor. I begge tilfælde gælder, at køres koden igen, så flyttes eller slettes igen kun halvdelen af dem, der er tilbage.
Er der en, som der kan lede mig på sporet af en årsag og dermed løsning?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester