VBA, MS Access MS Access в примерах

Текстовые Файлы - Построчное чтение


Public Sub importFileStrings(lFileID&, sFilePath$)
'es 17.03.2019
'Построчное чтение файла с записью строк в таблицу ("Строки")
'--------------------------------------------------------------------------
Dim FSO As Object 'FileSystemObject
Dim s As String
Dim FileLines() As String
Dim FSOFile As Object 'File
Dim TextStream As Object
Dim i As Long
Dim rst As Recordset
Dim lngRecID As Long
'--------------------------------------------------------------------------
On Error GoTo importFileStrings_Err

   Set FSO = CreateObject("Scripting.FileSystemObject")
   Set FSOFile = FSO.GetFile(sFilePath)
   Set TextStream = FSOFile.OpenAsTextStream(1) 'OpenFileForReading = 1
   
    Do While Not TextStream.AtEndOfStream
        s = s & TextStream.ReadLine & vbNewLine
    Loop
    
    TextStream.Close
    FileLines = Split(s, vbNewLine, -1, vbTextCompare)


    lngRecID = Nz(DMax("Rec_ID", "Строки")) 'ID записи
    
    Set rst = CurrentDb.OpenRecordset("Строки", dbOpenDynaset)

    For i = LBound(FileLines) To UBound(FileLines)
        s = FileLines(i)
        'Debug.Print s
        s = Mid(Trim(s), 1, 255) 'Обрезка до 255 символов (не обязательно)
        If s <> "" Then 'Если строка не пустая
            With rst
                lngRecID = lngRecID + 1
                .AddNew
                 'Заполнение полей значениями
                !Rec_ID = lngRecID   'Счётчик
                !File_SID = lFileID  'Ключ связи с таблицей файлов
                !Строка = s
                .Update
            End With
        End If
    Next i

importFileStrings_End:
    On Error Resume Next
    rst.Close
    Set rst = Nothing
    Exit Sub

importFileStrings_Err:
    s = "Error: " & Err.Number & vbCrLf & Err.Description & " in Sub: importFileStrings"
    'MsgBox s, vbCritical, "Error in Application"
    Debug.Print s
    Err.Clear
    Resume importFileStrings_End
End Sub



Ещё вариант:

Private Sub esImportTextLineByLyne(sFilePath As String)
'es - 17.05.2013
'Построчное чтение текстового файла
'--------------------------------------------------------------------
Dim FF As Long
Dim i As Long     'Счетчик строк
Dim sLine As String

On Error GoTo esImportTextLineByLyne_Err
'Проверка наличия файла
    If Dir(sFilePath, vbNormal) = "" Then
        MsgBox "Не могу найти файл:" & vbCrLf & _
            sFilePath, vbCritical
        Exit Sub
    End If
'
'Обработка файла с данными - Чтение построчно
    FF = FreeFile
    Open sFilePath For Input As #FF ' Открывает файл для чтения.
    
    Do While Not EOF(1) ' Цикл до конца файла.
        Line Input #FF, sLine    'Читаем одну строку в переменную
        i = i + 1                'Счетчик принятых строк + 1
        Debug.Print "Строка #" & Format(i, "000") & ": " & sLine
    Loop
    Close #FF                    'Закрывает файл.


esImportTextLineByLyne_Bye:
    Exit Sub

esImportTextLineByLyne_Err:
    MsgBox "Error " & Err.Number & vbCrLf & Err.Description & vbCrLf & _
    "in procedure esImportTextLineByLyne", vbCritical, "Error!"
    Resume esImportTextLineByLyne_Bye
End Sub


Назад ToTop
L.E. 17.03.2019
Рейтинг@Mail.ru