|
||||
Disse websidene oppdateres ikke lengre og er kun tilgjengelig for historikken sin skyld.Klikk her for å gå til den oppdaterte informasjonen. Sekvensiell filtilgangSekvensiell tilgang (Input, Output, and Append) benyttes til å lese fra og skrive til tekstfiler, som for eksempel log-filer og rapporter (*.txt filer, *.ini filer og *.csv filer). Det er enkelt å lage og redigere filer for sekvensiell tilgang med vanlige tekstredigeringsprogrammer, som for eksempel Notisblokk. Disse filene kan siden lett leses eller redigeres ved hjelp av VBA. Filer for sekvensiell tilgang er ikke egnet til å lagre store mengder data siden de krever større lagringsplass enn de andre filtypene. Man kan heller ikke lese og skrive til en sekvensiell fil samtidig, man må lukke filen dersom man ønsker å bytte mellom lesing og skriving. Åpne filer for sekvensiell tilgang
For å åpne en fil for sekvensiell tilgang fra VBA benytter man denne
syntaksen: Skrive til filer som er åpnet for sekvensiell tilgangFor å lagre informasjon i en fil åpnet for sekvensiell tilgang benytter man funksjonene Print # eller Write # for å skrive data til filen. Print # skriver formaterte data (data med fast lengde) til en sekvensiell
fil og benytter følgende syntaks: Print # filenumber,[outputlist] Sub PrintToTextFile() Dim FileNum As Integer, i As Long If Dir("C:\FOLDERNAME\TEXTFILE.TXT") <> "" Then ' sletter filen dersom den finnes fra før Kill "C:\FOLDERNAME\TEXTFILE.TXT" End If FileNum = FreeFile ' neste ledige filnummer Open "C:\FOLDERNAME\TEXTFILE.TXT" For Output As #FileNum ' oppretter en ny fil 'Open "C:\FOLDERNAME\TEXTFILE.TXT" For Append As #FileNum ' legger til data på slutten av en eksisterende fil ' skriv til tekstfilen For i = 1 To 100 Print #FileNum, "Dette er linje nummer " & i & " " & Date & " " & i If i Mod 10 = 0 Then Print #FileNum, ' legger til en blank linje for hver 10. linje Next i Close #FileNum ' lukker filen End SubBåde Output og Append vil opprette en ny fil dersom filen ikke eksisterer fra før. Append vil legge de nye dataene til på slutten av den eksisterende filen Write # skriver komma-separerte data til tekstfilen og benytter denne syntaksen: Write#filenumber[,outputlist] Når man skriver data til en fil med Write #, vil tekstfelt omgis av anførselstegn ("), datofelt vil omgis av #. På grunn av dette benyttes Write # til å lagre data som skal leses med Input #. Her er et eksempel: Sub WriteToTextFile() Dim FileNum As Integer, i As Long If Dir("C:\FOLDERNAME\TEXTFILE.TXT") <> "" Then ' sletter filen dersom den finnes fra før Kill "C:\FOLDERNAME\TEXTFILE.TXT" End If FileNum = FreeFile ' neste ledige filnummer Open "C:\FOLDERNAME\TEXTFILE.TXT" For Output As #FileNum ' oppretter en ny fil 'Open "C:\FOLDERNAME\TEXTFILE.TXT" For Append As #FileNum ' legger til data på slutten av en eksisterende fil ' skriv til tekstfilen For i = 1 To 100 Write #FileNum, "Dette er linje nummer " & i, Date, i Next i Close #FileNum ' lukker filen End Sub Se eventuelt Hjelp for nærmere informasjon om Print og Write. Lese fra filer som er åpnet for sekvensiell tilgangFor å lese informasjon fra en tekstfil må man først åpne filen for Input, deretter benytter man Line Input # eller Input # for å lese innholdet i filen. Line Input # benyttes når man ønsker å lese innholdet i filen en linje om gangen. I en tekstfil med komma-separerte data kan man benytte Input # for å lese innholdet fra hver linje inn i en liste med variabler. Les informasjon fra en tekstfil Sub ReadLineFromPrintedTextFile() Dim InputString As String, FileNum As Integer FileNum = FreeFile ' neste ledige filnummer Open "C:\FOLDERNAME\TEXTFILE.TXT" For Input As #FileNum While Not EOF(FileNum) Line Input #FileNum, InputString ' les en linje fra tekstfilen Debug.Print InputString ' gjør noe med informasjonen Wend Close #FileNum End Sub Les informasjon fra en tekstfil med komma-separet informasjon "Nordmann", "Ola", 30, "Kongens gate 11", "Oslo"Denne eksempelmakroen viser hvordan man kan lese informasjon fra en fil med komma-separerte data: Sub ReadLineFromWrittenTextFile() Dim InputString As String, FileNum As Integer Dim TextLine As String, MyDate As Date, IntegerValue As Integer FileNum = FreeFile ' neste ledige filnummer Open "C:\FOLDERNAME\TEXTFILE.TXT" For Input As #FileNum While Not EOF(FileNum) Input #FileNum, InputString, MyDate, IntegerValue Debug.Print InputString, MyDate, IntegerValue ' gjør noe med informasjonen Wend Close FileNum End Sub
Dokumentet er sist oppdatert 1999-12-17 12:33:11
|
||||
|