Описание: Примеры по работе с файлами из среды 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] |