23. september 2008 - 19:47Der er
12 kommentarer og 1 løsning
Blanke data udlæses i tCSV-fil (Kabaks kode)
Hej Kabak har lavet denne fortrinelig kode ,men jeg har et problem
Public Sub Hent_FletOgGem() Dim Ordre() As Variant, Ordrelinje() As Variant, Import() As Variant, X As Long, I As Long, Sti As String Dim OK As Boolean X = 0 Sti = "H:\Skrivebord\Temp\OK\" Open Sti & "Ordre.csv" For Input As #1 Do Line Input #1, linje ReDim Preserve Ordre(X) Ordre(X) = Split(Replace(linje, Chr(34), ""), ";") ' Ordre(X) = Split(linje, ";") X = X + 1 Loop Until EOF(1) Close #1
X = 0 Open Sti & "Ordrelinje.csv" For Input As #1 Do Line Input #1, linje ReDim Preserve Ordrelinje(X) Ordrelinje(X) = Split(Replace(linje, Chr(34), ""), ";") X = X + 1 Loop Until EOF(1) Close #1
For I = 1 To UBound(Ordrelinje, 1) OK = False For X = 1 To UBound(Ordre, 1)
If (Ordrelinje(I)(2)) = "" Then Exit For ' hvis tom rykkes til næste Ordrelinje
If Ordre(X)(0) = Ordrelinje(I)(0) Then Import(I, 0) = Ordre(X)(0) ' A Import(I, 1) = Ordre(X)(1) ' B Import(I, 2) = Ordre(X)(5) ' F Import(I, 3) = Format(Ordre(X)(16), DD - MM - YYYY) ' Q Import(I, 4) = Ordrelinje(I)(2) ' C Import(I, 5) = Ordrelinje(I)(3) ' D Import(I, 6) = Ordrelinje(I)(4) ' E OK = True Exit For
End If
Next ' If Not OK Then Import(I, 0) = "No Match"
Next
Open Sti & "Import.txt" For Output As #1 For I = 1 To UBound(Import, 1) For X = 0 To UBound(Import, 2) If X <> UBound(Import, 2) Then Print #1, """"; Import(I, X); """"; ";"; Else Print #1, Import(I, X) End If Next Next
Close #1 Msgbox "kørsel udført" End Sub
Men der et problem i nedenstående linje idet at når if linjen udlæser "Exit for" så skriver den til output-filen, godt nok uden data men der kommer en linje med 7 semikoloner
Public Sub Hent_FletOgGem() Dim Ordre() As Variant, Ordrelinje() As Variant, Import() As Variant, X As Long, I As Long, Sti As String Dim J As Integer, oldOrdreNR As Long X = 0
Sti = "H:\Skrivebord\Temp\OK\" Open Sti & "Ordre.csv" For Input As #1 Do Line Input #1, linje ReDim Preserve Ordre(X) Ordre(X) = Split(Replace(linje, Chr(34), ""), ";") X = X + 1 Loop Until EOF(1) Close #1
X = 0 Open Sti & "Ordrelinje.csv" For Input As #1 Do Line Input #1, linje ReDim Preserve Ordrelinje(X) Ordrelinje(X) = Split(Replace(linje, Chr(34), ""), ";") X = X + 1 Loop Until EOF(1) Close #1
For I = 1 To UBound(Ordrelinje, 1) For X = 1 To UBound(Ordre, 1) If Ordre(X)(0) = Ordrelinje(I)(0) Then If Val(Trim(Ordre(X)(1))) = oldOrdreNR Then J = J + 1 Else J = 1 End If
oldOrdreNR = Val(Trim(Ordre(X)(1))) Import(I, 0) = Ordre(X)(0) ' A Import(I, 1) = Ordre(X)(1) & "-" & J ' B Import(I, 2) = Ordre(X)(5) ' F Import(I, 3) = Format(Ordre(X)(16), "DD-MM-YYYY", vbMonday, vbFirstFourDays) ' Q Import(I, 4) = Ordrelinje(I)(2) ' C Import(I, 5) = Ordrelinje(I)(3) ' D Import(I, 6) = Ordrelinje(I)(4) ' E Exit For End If Next Next
Open Sti & "Import.txt" For Output As #1 For I = 1 To UBound(Import, 1) For X = 0 To UBound(Import, 2) If IsEmpty(Import(I, 2)) Then Exit For If X <> UBound(Import, 2) Then Print #1, """"; Import(I, X); """"; ";"; Else Print #1, Import(I, X) End If Next Next
Close #1 Msgbox "Kørsel udført", , "Flet CSV-filer" End Sub
Forstår bare ikke at linie If IsEmpty(Import(I, 4)) Then Exit For ikke slår ud på ""
Tusinde tak for hjælpen Får måske brug for hjælp til dato afgrænsning af data til output filen, fra Ordre(X)(9)> NOW() (kolonne J)
Pejsen
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.