MyTetra Share
Делитесь знаниями!
FAQ: Работа с файлами средствами VB
17.03.2019
00:07
Текстовые метки: Построчное чтение текстового файла
Раздел: !Закладки - VBA - Text

FAQ: Работа с файлами средствами VB

(обращений: 37903 с 08.08.2003)

Разделы:  Операционка, Полезные функции, ЧаВо (FAQ)

 

Описание: Примеры по работе с файлами из среды VB (VBA)

Добавил на сайт: am 08.08.2003

'Чтение бинарного файла в массив байт

Open sFileName For Binary Access Read As #1

Get #1, , TheBytes()

Close #1


'запись массива байт в файл

Open sFileName For Binary Access Write As #1

Put #1, , TheBytes()

Close #1


'Построчное чтение текстового файла

iFile = FreeFile

Open App.Path & "\" & sININame For Input As iFile

Do While Not EOF(iFile) ' Loop until end of file.

Line Input #iFile, txt

'sINI = sINI + txt + vbCrLf

Loop

Close iFile


'построчная запись в текстовый файл

fnum = FreeFile

file_name = App.Path

If Right$(file_name, 1) <> "\" _

Then file_name = file_name & "\"

file_name = file_name & LOG_FILE_NAME

Open file_name For Append As #fnum


' Remember that the file is open.

file_open = True


' Write the date and time, and the error message.

Print #fnum, Now

Print #fnum, "Computer: " & ComputerName

Print #fnum, txt1

Print #fnum, "**********"


' Close the file.

Close #fnum


'Далее приведены 2 готовые функции, читающие текстовый файл в строковую переменную.

'первая читает построчно, вторая файл целиком. По быстродействию вторая функция значительно быстрее.

Public Function File2Str(sPath As String) As String

Dim txt As String

Dim sLine As String

Dim fn As Long

fn = FreeFile

Open sPath For Input As fn

Do While Not EOF(1)

Line Input #fn, sLine

txt = IIf(Len(txt) > 0, txt & vbCrLf, "") & sLine

Loop

Close fn

File2Str = txt

End Function

'am 030505

Public Function File2StrB(sPath As String) As String

Dim txt As String

Dim sLine As String

Dim fn As Long

fn = FreeFile

Dim TheBytes() As Byte

ReDim TheBytes(FileLen(sPath) - 1)

Open sPath For Binary Access Read As fn

Get #fn, , TheBytes()

Close fn

File2StrB = StrConv(TheBytes(), vbUnicode)

End Function


Пример как изменить (удалить) строчку в текстовом файле (пример от Сергея Гаврилова):
(
http://am.rusimport.ru/msaccess/f2.aspx?id=3354 )

Sub test()

Dim fso, a, f, retstring, retstream

Const ForReading = 1, ForWriting = 2

Set fso = CreateObject("Scripting.FileSystemObject")

Set f = fso.GetFile("d:\config.sys")

Set a = f.OpenAsTextStream(ForReading, False)

Do While a.AtEndOfStream <> True

retstring = a.ReadLine

If retstring Like "files*" Then

retstring = "fileshigh=200"

End If

retstream = retstream & retstring & vbCrLf

Loop

a.Close

Set a = f.OpenAsTextStream(ForWriting, False)

a.Write retstream

a.Close

End Sub


(пример использует объектную модель библиотеки Windows Scripting Host, но и без неё идея такая же - прочитать построчно файл, изменить нужные строки и переписать его заново).

Наверняка я здесь привел не все методы работы с файлами средствами VB, так что буду рад добавлениям и исправлениям! Добро пожаловать в комментарии ;-)

[Back]

Так же в этом разделе:
 
MyTetra Share v.0.52
Яндекс индекс цитирования