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.
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
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.