31. august 2007 - 14:29
Der er
3 kommentarer og
1 løsning
csv fil fletning
Jeg har 2 csv filer, der skal "flettes".
Fil 1: Indeholder adresser
Id, fornavn, efternavn, adresse, postnr, by
50, Hans, Hansen, Æblevej 25, 1111, Hanseby
51, Jens, Jensen, Jensevej 2, 2222, Jenseby
52, Kurt, Kurtsen, Kurtevej 3, 3333, Kurteby
53, Dorte, Nielsen, Nilsevej, 4444, Odense
Fil 2: Indeholder rettelser til fil 1.
Id, fornavn, efternavn, adresse, postnr, by
51, , , Hansevej 1, ,
53, Niels, , , , Nilseby
Det er kun de linier, der skal rettes der er i fil 2.
Hvordan får jeg opdateret fil 1 med rettelserne fra fil 2?
31. august 2007 - 17:28
#1
Prøv at teste denne
Public Sub Ret_adresseliste()
Dim Liste() As Variant
Dim Ret() As Variant
Dim I As Long, X As Integer, Y As Integer
Dim Linje As String
'Ret nedstående til dine filnavne
fil1 = "C:\test\Rettelse.csv" ' filen med rettelser
fil2 = "C:\test\Adresseliste.csv" ' filen der skal rettes i
fil3 = "C:\test\Old_Adresseliste.csv" ' backupfil
I = -1
Open fil1 For Input As #1 ' indlæser rette filen
Do
Line Input #1, Rstr
I = I + 1
ReDim Preserve Ret(I)
Ret(I) = Split(Rstr, ";")
Loop Until EOF(1)
Close #1
I = -1
Open fil2 For Input As #1 ' indlæser adresse filen
Do
Line Input #1, Rstr
I = I + 1
ReDim Preserve Liste(I)
Liste(I) = Split(Rstr, ";")
Loop Until EOF(1)
Close #1
Name fil2 As fil3 ' omdøber adressefilen til backup filen
For I = 1 To UBound(Ret)
For X = 1 To UBound(Liste)
If Ret(I)(0) = Liste(X)(0) Then ' tjekker om det er den der skal rettes
For Y = 0 To UBound(Ret(I))
If Not Ret(I)(Y) = " " Then
Liste(X)(Y) = Ret(I)(Y)
End If
Next
Exit For
End If
Next
Next
Open fil2 For Output As #1 ' gemmer den rettede fil
For I = 0 To UBound(Liste)
For X = 0 To UBound(Liste(I))
Linje = Linje & Liste(I)(X) & ";"
Next
Linje = Left(Linje, Len(Linje) - 1)
Print #1, Linje
Linje = ""
Next
Close
End Sub