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.
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.
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 ":".
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.
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.
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 :-)
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.
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.
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.
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.
Synes godt om
Ny brugerNybegynder
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.