Avatar billede michaelrar Seniormester
27. oktober 2010 - 21:59 Der er 13 kommentarer og
1 løsning

Udtræk af data fra Outlook mail til txt fil og start Word makro

Jeg har søgt tilligere men uden helt at finde det rigtige.

Jeg har brug for en makroKNAP i OUTLOOK, der i en åben mail kan udtrække data fra mailen til en txt-fil og efterfølgende åbne en given Word-skabelon.

Dataene i mailen står ens hver gang i 15 linier under hinanden.

Eks.:
Navn
Adresse
Postnr
By
Ect...

Der kommer nok nogle tillægsspørgsmål, da jeg ikke er dus med VBA-programmering i Outlook.
Avatar billede supertekst Ekspert
27. oktober 2010 - 23:34 #1
Det skulle nok kunne lade sig gøre. Kunne det tænkes, at VBA-koden lå i en Word-skabelon, som så hentede data fra mailen?

Kan de relevante mails identificeres entydigt, således at andre mails kan udelades?
Avatar billede michaelrar Seniormester
28. oktober 2010 - 05:41 #2
Det vil være ekstra super, hvis koden kan ligge i Word, da det er her vi har brug for de data der er i de valgte mails.

Mailsene kan godt identificeres, hvis det kan ske ud fra en given mappe de ligger i og så om de er ulæst eller læst. Ellers har jeg ikke lige nogen ideer der kan udpege dem.

Det vil være fint om man kunnne få hver enkelt præsenteret i en msgbox og så sige ja/nej til at køre koden, men det kan jeg nok selv få styr på.
Avatar billede supertekst Ekspert
28. oktober 2010 - 09:17 #3
Tak for info..

Mappen - under indbakke - ok?

Læst / ulæst kan testes.
Der kunne være en "Fast tekst" i emne, der kunne identificere.

Hvilken office-version?
Avatar billede supertekst Ekspert
28. oktober 2010 - 09:45 #4
Skal Word dokumentet kun rumme een mail?
Navngivning af dokument?
Avatar billede michaelrar Seniormester
28. oktober 2010 - 11:34 #5
Den ligger ikke under indbakken i dag, men ved siden af. Er det et problem kan det ændres uden det giver kvaler.

Et dokument = en mail. Vi henter normalt 5-15 dokumenter efter hinanden. lige nu navngives, gemmes, printes og lukkes dokumentet i en proces og den tomme skabelonen genåbnes.
Hvis man kan markere mailen som læst i processen og tjekke for det næste gang den åbnes må det kunne løse den del.

Office 2003

Håber det er forståeligt.
Avatar billede supertekst Ekspert
28. oktober 2010 - 11:52 #6
Mappe-placering - skulle ikke være et problem.

Er der mere tekst i mailen end de 15 linjer?

Navngivning af dokument - kunne det ske automatisk?
Måske på basisaf afsender eller?

Mailen kan automatisk markeres som læst og status ligeledes testes automatisk.

Office 2003 - anvender selv 2007 - der er blive noget med referencer - men det skal jeg nok "supporte".
Avatar billede michaelrar Seniormester
28. oktober 2010 - 12:03 #7
Ja, de 15 var blot "et skud fra hoften", reelt er der 22. Men regner selv med at kunne lave de justeringer der skal til specifikt for at få det til at spille.

Dokumentet bliver i dag navngivet automatisk og skal helst ikke ændres (sker på baggrund af 2 af linierne i mailen. ( Linie1 & " - " & linie2 )

Jeg er ikke online mere før i aften, så et manglende svar på nye indlæg kommer først senere i dag :-)
Avatar billede supertekst Ekspert
28. oktober 2010 - 13:02 #8
Tak & ok..
Avatar billede supertekst Ekspert
28. oktober 2010 - 18:43 #9
Rem version 1 - skrevet i V/2007 - gem som 2003.dot
Rem ===============================================
Rem Reference sat til: Microsoft Outlook 12.0 Object Library - skal justeres til 2003-versionsNr (11.0)
Rem ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Rem Evt. til at forhindre "Et program forsøger..."
Rem www.contextmagic.com/express-clickyes/Free-version.htm
Rem ============================================================
Const gemDokSti = "C:\Documents and Settings\pb.KHNBPB\Skrivebord\922481\"  '<------- justeres

Const overMappenavn = "Private Mapper"  '<-------------- korriger navn
Const mappenavn = "TestMappe"  '<---------------- indsæt navn på relevante mappe (sideordnet indbakke)

Const antalBodyLinjer = 22          '<------- evt. korriger antal linjer fra mail, der skal overføres til Word

Dim antalMails As Integer, mappen
Private Sub Document_New()
    HentMails
End Sub
Public Sub HentMails()
    antalMails = åbnOutlookMappe(mappenavn)
    traverserMappen antalMails
End Sub
Private Function åbnOutlookMappe(mappenavn)
Dim mailApp, nameSpace, aFold, bFold, cFold

    Set mailApp = CreateObject("Outlook.Application")
    Set nameSpace = mailApp.GetNamespace("MAPI")
    Set aFold = nameSpace.Folders
    Set bFold = aFold(overMappenavn)
    Set mappen = bFold.Folders(mappenavn)
   
    åbnOutlookMappe = mappen.Items.Count
End Function
Private Sub traverserMappen(antalMails)
Dim afsender As String, modtaget As String
Dim tekst As String, tekst1 As String
Dim mx As MailItem, primærTekst1 As Variant, primærTekst2 As String
    If antalMails > 0 Then
        For m = 1 To antalMails
            Set mx = mappen.Items(m)
           
Rem Er mailen ulæst
            If mx.UnRead = True Then
                afsender = mx.SenderEmailAddress
                modtaget = Replace(CStr(mx.ReceivedTime), ":", "")
               
                tekst = mx.Body
                tekst1 = Replace(tekst, Chr(13) & Chr(10) & Chr(13) & Chr(10), "|", Count:=antalBodyLinjer)
               
                primærTekst1 = Split(tekst1, "|")
                x = UBound(primærTekst1)
               
                primærTekst2 = ""
               
                For f = 0 To x - 1
                    primærTekst2 = primærTekst2 & primærTekst1(f) + vbCr
                Next f
               
Rem Indsætter tekster 22 afsnit fra mail
                ActiveDocument.Select
                Selection.HomeKey Unit:=wdStory
                Selection.TypeText Text:=primærTekst2
               
Rem Gemmer og udskriver
                ActiveDocument.SaveAs gemDokSti + afsender & " " & modtaget & ".doc"
                ActiveDocument.PrintOut
               
Rem Rydder indhold
                Selection.WholeStory
                Selection.Delete Unit:=wdCharacter, Count:=1

                mx.UnRead = False
                mx.Save
               
            End If
        Next m
        ActiveDocument.Close Savechanges:=wdDoNotSaveChanges
        Application.Quit
    End If
End Sub
Avatar billede michaelrar Seniormester
01. november 2010 - 15:48 #10
Hej Supertekst

Det ser meget lovende ud det du har lavet ind til nu.

Jeg har fået rettet koden til så den passer til mine mapper mv.

Jeg får en fejl i linien Dim mx As MailItem, hvor jeg får følgende fejl "User-defined type not defined". (det er nok her mine evner ikke helt rækker til som amatør)

Beklager jeg ikke har vent tilbage før, men har ikke fået mail(ellers også er den smuttet forbi) om der var kommet nyt indlæg. De næste dage er jeg regelmæssigt online.
Avatar billede supertekst Ekspert
01. november 2010 - 16:14 #11
Ok - har du sat reference til Outlook?
(Vba-vinduet(Alt+F11) / Tools / References / Microsoft Outlook 12.0 Object Library - skal justeres til 2003-versionsNr (11.0)
Avatar billede michaelrar Seniormester
01. november 2010 - 16:16 #12
Er gjort (skete automatisk da jeg gemte som 2003 skabelon
Avatar billede supertekst Ekspert
01. november 2010 - 17:53 #13
Prøv at tage et skærmprint af dine referencer- evt. indsæt i et Word-dok og send dette til mig.

(@-adresse under profil)
Avatar billede supertekst Ekspert
02. november 2010 - 10:35 #14
Manglende ref. til Outlook var årsagen..
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
Kategori
Kurser inden for grundlæggende programmering

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