Jeg har en fil med navne, adresser mv. og de skal flettes med et word dokument. Det er en funktion der skal udføres flere gange i løbet af dagen. Så fletningen skal ske automatisk, evt. via planlagt opgaver.
Der er tale om en hel almindelig tekstfil. Hvor linie indeholder feltnavne og efterfølgende linier indeholder de faktiske data. feltnavne og data kan være adskilt af ; eller #
Det ville være en fordel at få tekstfilen smidt over i f.eks. exel via en VBA-behandling - derefter kunne den normale brevfletningsprocedure i Word anvendes. Kan du vises uddrag fra tekstfilen - idet du såvel nævner ; & #
Filen kommer direkte fra et Unix system og kan som følge heraf ikke dannes i excel, access eller lig. uden menneskelig indblanding.
Formatet kunne se sådanne ud: Navn#Adresse1#Adresse2#PostBy#Andet Anders And#Et Sted på landet##2412 Andeby#Bla bla Onkel Joakim #Pengetanken##2412 Andeby#Elsker at bade..
Indlæsningen i excel skal så ske automatisk. Ideen var at der ikke skulle fortages manuelt arbejdet... jeg er så "næsten" ligeglad med hvordan det sættes op
Bud på første trin: =================== Indsæt denne kode i en Excel-fil - VBA - ark 1 Indlæg Unix-tekstfilen i samme mappe - ændring af navnet til "unix.txt" Kør koden - gem Excel filen. Opbyg brevfletning i Word - anvend excelfilen som datakilde.
Dim xsti As String, række As Integer Const uXtegn = "#" Sub hentUnix() hentSti række = 1 behandlingAfTextfil
ActiveSheet.Columns.AutoFit
MsgBox ("Regneark er klar") End Sub Private Sub behandlingAfTextfil() Dim navn, adr1, adr2, postby, andet
Open xsti + "unix.txt" For Input As #1 While Not EOF(1) Line Input #1, linie adskilLinien linie, navn, adr1, adr2, postby, andet sætIregneArk navn, adr1, adr2, postby, andet Wend Close #1 End Sub Private Sub sætIregneArk(navn, adr1, adr2, postby, andet) With ActiveWorkbook.Sheets(1) .Cells(række, 1) = navn .Cells(række, 2) = adr1 .Cells(række, 3) = adr2 .Cells(række, 4) = postby .Cells(række, 5) = andet række = række + 1 End With End Sub Private Sub adskilLinien(linie, navn, adr1, adr2, postby, andet) Dim p, lin, count, del lin = linie + uXtegn count = 0 While InStr(lin, uXtegn) > 0 p = InStr(lin, uXtegn) If p > 0 Then del = Left(lin, p - 1) Select Case count Case 0 navn = del Case 1 adr1 = del Case 2 adr2 = del Case 3 postby = del Case 4 andet = del End Select lin = Mid(lin, p + 1) count = count + 1 Else Stop End If Wend End Sub Private Sub hentSti() xsti = ActiveWorkbook.Path If Right(xsti, 1) <> "\" Then xsti = xsti + "\" End If End Sub
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.