05. december 2006 - 06:58Der er
7 kommentarer og 1 løsning
læser txt filer ind i array
HEj ,
jeg har en kode der læser alle text filer fra en mappe ind i mit excel ark , jeg ville høre om det ikke var muligt at læse dem direkte ind i et array i stedet for ?
min kode ser således ud.
----start
Dim FS As FileSearch Dim FilePath As String, FileSpec As String Dim i As Long, x As Long Dim lFNo As Long Dim tekst As String Dim temp
Set FS = Application.FileSearch With FS .LookIn = FilePath .Filename = FileSpec .Execute If .FoundFiles.Count = 0 Then MsgBox ("Ingen filer fundet") Exit Sub End If Sheets("data").Select ActiveCell.Cells.Select Selection.ClearContents ActiveCell.Select End With x = 1 For i = 1 To FS.FoundFiles.Count lFNo = FreeFile Open FS.FoundFiles(i) For Input As #lFNo While Not EOF(lFNo) Line Input #lFNo, tekst If Left(tekst, 1) = "I" Then GoTo ee x = x + 1
x = 0 For i = 1 To FS.FoundFiles.Count lFNo = FreeFile Open FS.FoundFiles(i) For Input As #lFNo While Not EOF(lFNo) x = x + 1 ReDim Preserve TempVar(x) Line Input #lFNo, TempVar(x) If Left(TempVar, 1) = "I" Then TempVar(x) = FS.FoundFiles(i) End If Wend 'Shell ("xcopy /r " & temp & " C:\michael\EksOpgDataE06\data\reservationer\kørt\")
Close #lFNo ' Set fso = CreateObject("Scripting.FileSystemObject") 'fso.movefile temp, "C:\michael\EksOpgDataE06\data\reservationer\kørt\" & Right(temp, 21)
Next For x = 1 To UBound(TempVar) temp = Split(TempVar(x), ",") ActiveSheet.Range(Cells(x - 1, 1), Cells(x - 1, UBound(temp))) = temp Next end sub
hmm ja men så kommer det hele ind i arraet som een langlinje , måske jeg bare skulle smide dem ind i arket også derefter læse linje for linje i arket så kan jeg også bruge arket som historik så man ikke skal læse dem ind hvergang.
kan du hjælpe mig med dette.
dvs så jeg kigger om der er kommet en ny fil og i så fald smider jeg den ind i bunden af mit ark og derefter læser jeg alle linjerne ind i et array
prøv at teste denne, sen skulle sætte det ind i variablen ReelVar
Dim TempVar() As Variant Dim ReelVar() As Variant
x = 0 For i = 1 To FS.FoundFiles.Count lFNo = FreeFile Open FS.FoundFiles(i) For Input As #lFNo While Not EOF(lFNo) x = x + 1 ReDim Preserve TempVar(x) Line Input #lFNo, TempVar(x) If Left(TempVar, 1) = "I" Then TempVar(x) = FS.FoundFiles(i) End If Wend 'Shell ("xcopy /r " & temp & " C:\michael\EksOpgDataE06\data\reservationer\kørt\")
Close #lFNo ' Set fso = CreateObject("Scripting.FileSystemObject") 'fso.movefile temp, "C:\michael\EksOpgDataE06\data\reservationer\kørt\" & Right(temp, 21)
Next ReDim ReelVar(UBound(TempVar), 10) ' 10 ANGIVER HVOR MANGE FELTER DER KAN VÆRE For x = 1 To UBound(TempVar) temp = Split(TempVar(x), ",") For i = 0 To UBound(temp) ReelVar(i, x) = temp(i) ' sætter felterne ind i ReelVar Next Next
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.