Avatar billede juks Novice
05. december 2006 - 06:58 Der 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


FilePath = "C:\michael\EksOpgDataE06\data\reservationer"
FileSpec = "*.csv"
'***************************************

   
   
   
   
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
     
        temp = Split(tekst, ",")
        ActiveSheet.Range(Cells(x - 1, 1), Cells(x - 1, UBound(temp))) = temp
ee:
temp = FS.FoundFiles(i)
    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
Avatar billede kabbak Professor
05. december 2006 - 09:39 #1
Dim TempVar() 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
    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


Noget i denne stil
Avatar billede juks Novice
07. december 2006 - 11:17 #2
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
Avatar billede kabbak Professor
07. december 2006 - 18:27 #3
Den skulle helst skrive det linie for linie, ligesom før.
Forskellen er at den læser alle filer ind, inden den begynder at skrive.
Avatar billede kabbak Professor
08. december 2006 - 08:35 #4
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
Avatar billede juks Novice
04. januar 2007 - 10:31 #5
lukker smid et svar
Avatar billede kabbak Professor
04. januar 2007 - 11:02 #6
et svar ;-))
Avatar billede juks Novice
12. december 2007 - 11:57 #7
som svar :-)
Avatar billede kabbak Professor
12. december 2007 - 14:53 #8
.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester