Avatar billede michaelrar Seniormester
06. december 2006 - 20:31 Der er 14 kommentarer og
1 løsning

Udtræk af data fra txt-fil og flet ind i Word

Hej

Jeg har dagligt brug for at trække data fra en række mails ud i en Word skabelon.

Eksempel på data:

Fra:    IUSR_XXXX@WEB35
Sendt:    3. december 2006 11:21
Til:    post@xxxxxx.dk
Emne:    6000

*****************************************************************
Navn:          Martin Pedersen
Firma:       
Adresse:      Jægersvej xxx
Stednavn:     
Postnr:        6000
By:            Kolding
Telefon_dag:  12345678
Telefon_aften: Bedes oplyst. Evt. tlf. dag.
Email:        Bedes oplyst, hvis de har en
Tilbud1:      Opgave 1
Kontrol:     
Tilbud2:     
Tilbud3:     
Tilbud4:     
Tilbud5:     
Tilbud6:     
Tilbud7:     

Bemaerkning:

Modtaget pr. telefon den 29/11


Fra:    IUSR_xxxxx@WEB35
Sendt:    25. november 2006 10:29
Til:    post@xxxxxx.dk
Emne:    6000

*****************************************************************
Navn:          Jesper Pedersen


EKSEMPEL SLUT

Det jeg forstiller mig er en VBA kode som søger txt-filen igennem for de kendeord som findes og efterfølgende henter den efterfølgende tekst ind i en Word-skabelon. Når første kundeemne er slut skal skabelonen lukke og åbnes igen med næste kundeemne og så fremdeles til der ikke er flere kunder i filen.

Det jeg har brug for er nogle hint til hvorledes jeg får trukket data ud og hentet ind i Word, lukket skabelonen og åbnet igen samt fundet start og slut på hvert emne, så skal jeg nok selv gøre det færdig.
Avatar billede stry Nybegynder
07. december 2006 - 21:39 #1
Her er et bud (dog i reduceret udgave):
Du skal have en word-skabelon som indeholder 6 bogmærker ("Fra"),("Sendt"),("Til"),("Emne"),("Navn"),("Firma"),("Adresse") og en txt-fil med følgende indhold:
======== Denne linie skal ikke med ======
Fra:IUSR_XXXX@WEB35
Sendt:3. december 2006 11.21
Til:post@xxxxxx.dk
Emne:6000
Navn:Martin Pedersen
Firma:Etfirma 
Adresse:Jægersvej xxx
Fra:AUSR_XXXX@WEB35
Sendt:13. december 2006 11.21
Til:post@xxxxxx.dk
Emne:5000
Navn:Søren Hansen
Firma:Enandetfirma     
Adresse:En vej xxx
======== Denne linie skal ikke med ======

Og så følgende kode i et modul:

Option Explicit
Type MailDataType
    FraAdr As String
    Sendt As String
    TilAdr As String
    Emne As String
    Navn As String
    Firma As String
    Adresse As String
End Type
Dim arrMailData() As MailDataType

Public Sub IndlaesData()
Dim tmp() As String
Dim tmp2
Dim arrTmp() As String
Dim arrTmp2 '() As String
Dim HeleFilen As String
Dim i As Long, j As Long
Dim FilNavn As String
Dim Filnummer As Integer

FilNavn = "C:\VBATest.txt"
Filnummer = FreeFile
i = 0
    Open FilNavn For Input As #Filnummer
        Do
            ReDim Preserve tmp(i)
            Line Input #Filnummer, tmp(i)
              tmp(i) = Trim(tmp(i))          'Debug.Print tmp(i)
            i = i + 1
        Loop Until EOF(Filnummer)
    Close #Filnummer
    j = -1
    For i = LBound(tmp) To UBound(tmp)
    tmp2 = Split(tmp(i), ":")
    'Debug.Print tmp2(0)
    tmp2(0) = tmp2(0) & ":"
        Select Case tmp2(0)
            Case "Fra:"
                j = j + 1
                ReDim Preserve arrMailData(j)
                arrMailData(j).FraAdr = tmp(i)
            Case "Sendt:"
                arrMailData(j).Sendt = tmp(i)
            Case "Til:"
                arrMailData(j).TilAdr = tmp(i)
            Case "Emne:"
                arrMailData(j).Emne = tmp(i)
            Case "Navn:"
                arrMailData(j).Navn = tmp(i)
            Case "Firma:"
                arrMailData(j).Firma = tmp(i)
            Case "Adresse:"
                arrMailData(j).Adresse = tmp(i)
        End Select
    'Debug.Print arrMailData(j).Navn
    Next i
    SkrivTilFil
End Sub

Public Sub SkrivTilFil()
Dim j As Long
Dim Skabelon As String
Skabelon = "C:\Maildata.dot"

    For j = LBound(arrMailData) To UBound(arrMailData)
            Documents.Add Skabelon
        'Debug.Print j
        With ActiveDocument
            .Bookmarks("Fra").Range.Text = arrMailData(j).FraAdr '& vbCr
            .Bookmarks("Sendt").Range.Text = arrMailData(j).Sendt '& vbCr
            .Bookmarks("Til").Range.Text = arrMailData(j).TilAdr '& vbCr
            .Bookmarks("Emne").Range.Text = arrMailData(j).Emne '& vbCr
            .Bookmarks("Navn").Range.Text = arrMailData(j).Navn '& vbCr
            .Bookmarks("Firma").Range.Text = arrMailData(j).Firma '& vbCr
            .Bookmarks("Adresse").Range.Text = arrMailData(j).Adresse '& vbCr
        End With
    Next j
End Sub

Hvis du giver din mail kan jeg sende dig skabelonen og koden.
Avatar billede stry Nybegynder
07. december 2006 - 21:44 #2
Bemærk at kolonnet i klokkeslettet er ændret til et punktum.
Det er i øvrigt vigtigt at textfilen er opbygget helt ens hver gang, da der ikke er nogen form for fejlbehandling indbygget.
Hvis du har mulighed for det var måske en idé at have en mere unik delimmitter end ":".
Avatar billede michaelrar Seniormester
08. december 2006 - 07:10 #3
Hej Stry

Det ser rigtigt spændende ud og du må meget gerne sende skabelon og kode i en mail. min mail adresse er michaelrasmussen_fjerndette_@get2net.dk
For nok først tid til at kikke på det for alvor i juleferien, men skal nok vende tilbage.
Mht. delimmitteren er den desværre givet af FrontPage, hvor den formular er lavet som skaber disse mails.

Takker mange gange ind til videre.
Mvh
Michael
Avatar billede learningvba Nybegynder
08. december 2006 - 07:48 #4
Vær opmærksom på at bla. feltet "Bemærkning:" i det originale eksempel spænder over flere linier.
Ovenstående "fortolker" fanger primært enkelt-linier.
For at fange fler-liniers som f.eks.

--------------
Bemaerkning:

Modtaget pr. telefon den 29/11


-------------

skal fortolker spørge for hver linie om der er kommet et nyt "keyword", og hvis ikke så tilføje linien til variablen for det "seneste/aktuelle" "keyword".

stry's flotte indlæg vil fungere fint med det eksempel (og dermed de forudsætninger) han har lavet.
Avatar billede stry Nybegynder
08. december 2006 - 13:28 #5
skabelon sendt.
Avatar billede stry Nybegynder
08. december 2006 - 13:42 #6
Min bemærkning 21:44:53 vedr. klokkeslet kan du se bort fra, det var en reminiscens fra tidligere hvor jeg lavede indlæsningen i arrayet på en anden måde. Og delimmitteren bør heller ikke være noget problem sådan som jeg har opbygget eksemplet.
Men det er rigtigt, som learningvba skriver, at det er baseret på at informationerne står på hver sin linie, men det kan selvfølgelig udvides til også at kunne tolke fler-linie informationer - men du skrev jo også at du ville færdiggøre det selv :-)
Avatar billede michaelrar Seniormester
09. december 2006 - 07:48 #7
Hej Learningvba

Godt observeret.
Bemærkningerne kan i princippet være uendelige lange eller i hvert fald spænde over flere linier.
Øvrige kendeord er kun enkeltlinier.
Så det vil nok være nødvendigt ved "Bemaerkning", at fortolkeren fortsætter til den støder på næste kendeord "Fra"

Til stry
Tusind tak for mailen, den er nået frem.

Glæder mig meget til at få tid at "lege" med dette.

Tusind tak for alle inputtene ind til videre.
Avatar billede stry Nybegynder
01. januar 2007 - 13:12 #8
Hej Michael,
Er du kommet videre med det?

Godt nytår til alle :-)
Avatar billede stry Nybegynder
18. januar 2007 - 10:55 #9
Michael?
Avatar billede stry Nybegynder
13. juni 2007 - 19:13 #10
Michael??
Avatar billede michaelrar Seniormester
14. juni 2007 - 11:40 #11
Hej Stry

Beklager du ikke har hørt fra mig før, men jeg har ikke fået mails om der har været nye indlæg før i dag (måske er de slugt af mit gamle spamfilter!?).

Tiden er desværre rent fra mig, af flere forskellige årsager.
Koden er stadig aktuelt, men kan ikke lige sige noget om hvornår jeg får kikket på det.
Tusind tak for tålmodigheden. Skal nok vende tilbage når jeg får ro til det.
Avatar billede stry Nybegynder
29. november 2007 - 17:35 #12
Michael?
Nu er det snart nytår - igen.....
Avatar billede stry Nybegynder
05. marts 2008 - 15:17 #13
Michael?
Avatar billede michaelrar Seniormester
05. marts 2008 - 16:11 #14
Hej Stry

Du er enten en meget tålmodig mand (m/k) eller en ivrig jæger :-)

Fra jeg lavede mit første indlæg til nu er vores virksomhed i mellemtiden vokset med ca. 300 % og intet tyder på der er ved at falde ro over det.
Det betyder også at min tanker dengang nok ikke holder længere.

Smid et svar og jeg skal kvittere med de 200 point, ikke mindst for tålmodigheden.

Takker for din deltagelse og håber ikke du vil afvise at hjælpe en anden gang hvis behovet opstår.
Avatar billede stry Nybegynder
05. marts 2008 - 21:44 #15
Hej Michael
Jeg er såmænd ikke nogen særlig ivrig jæger, men måske nok en tålmodig mand (m) :-).
Jeg sad og kiggede på uafsluttede jeg har deltaget i og faldt over dette, og når man bruger tid på at forsøge at løse andres problemer, er man naturligvis interesseret i at høre slutningen på historien.

Tillykke med at virksomheden går godt.

Du skal være velkommen til at henvende dig en anden gang - så vil jeg forsøge at hjælpe efter bedste (begrænsede) evne, hvis jeg ser spørgsmålet.
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