Hantering av textfiler (FSO)

Inledning

Här samlas alla tips som berör textfiler och hur dessa kan hanteras i Excel. 

För mer information om FSO se Fil- och mapphantering.

Se också följande tips, vilka också omfattar textfiler:

 

För tillämpning i Excel 97 krävs en egenutvecklad SPLIT-funktion som finns att tillgå här»

Läsa in data från textfil

Här demonstreras en teknik för att läsa in data från en textfil. Det som styr förfarandet är hur data är disponerat  i textfilen. Split-funktionen ger oss flera möjligheter att bestämma vilken avgränsare som ska användas, såsom komma,  tabb, semikolon mfl.

I vissa fall krävs det litet experimenterande innan rätt avgränsare kan identifieras och ibland förekommer det flera avgränsare, vilket detta exempel bl a belyser.

Bilden nedan visar hur data är disponerad i textfilen för detta exempel.

 

 

Så här ser data ut i Excel innan funktionen "Text till kolumner" exekveras i koden nedan:

 

 

Option Explicit

Option Compare Text

 Sub Lasa_Textfil()

   '© 2002 Alla rättighter XL-Dennis

   Dim fsoObj As Scripting.FileSystemObject

   Dim fsoFile As Scripting.File

   Dim fsoTS As Scripting.TextStream

   Dim vaData As Variant

   Dim i As Long

 

   Set fsoObj = New Scripting.FileSystemObject

   Set fsoFile = fsoObj.GetFile("e:\Arbetsmaterial\test.txt")

   Set fsoTS = fsoFile.OpenAsTextStream(ForReading, TristateFalse)

 

   'Split-funktionen finns ej tillgänglig i Excel 97.

   'Hela textfilen läses in och data delas upp per rad genom vbNewLine.

   vaData = Split(fsoTS.ReadAll, vbNewLine, , vbTextCompare)

 

   i = UBound(vaData)

   Range(Cells(1, 1), Cells(i, 1)).Value = vaData

 

   'Split-funktionen tillåter inte flera avgränsare varför vi måste här dela upp texten ytterligare.

   Columns("A:A").TextToColumns _

         Destination:=Range("A1"), _

         DataType:=xlDelimited, _

         FieldInfo:=Array(Array(1, 1), _

         Array(2, 1), Array(3, 1), _

         Array(4, 1), Array(5, 1))

 

   fsoTS.Close

   Set fsoFile = Nothing

   Set fsoObj = Nothing

 End Sub