24. august 2006 - 09:21
Der er
10 kommentarer
Automatisk brevflet
Jeg vil gerne have hjælp til følgende opgave:
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.
Hvad gør jeg?
24. august 2006 - 10:53
#7
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..
24. august 2006 - 14:20
#10
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