VBA/Excel/Access/Word/File Path/TextStream

Материал из VB Эксперт
Перейти к: навигация, поиск

On Error/Goto and the Err Object

 
Private Sub ReadTxtFile()
    Dim myFileSystemObject As FileSystemObject, aFile As TextStream
    Dim fileContent As String, colStr As String
    Dim I As Integer, ms As Integer
    Dim fPath As String
    On Error GoTo ErrorHandler
    I = ActiveCell.Row
    Set myFileSystemObject = New FileSystemObject
    fPath = "D:\myFile.txt"
    Set aFile = myFileSystemObject.OpenTextFile(fPath, 1)
    Do While Not aFile.AtEndOfStream
        fileContent = aFile.ReadLine
        Debug.Print fileContent
    Loop
    aFile.Close     "Close file and convert lines of data to columns
    Set myFileSystemObject = Nothing
    Set aFile = Nothing
    Exit Sub
ErrorHandler:
    If Err.Number = 53 Or Err.Number = 76 Then
        ms = MsgBox(Err.Description & vbCrLf & _
                  "Do you want to look for the file?", vbYesNo)
        If ms = 6 Then
            fPath = ShowFileDialog(fPath)
            If fPath <> "Cancelled" Then Resume
        Else
            MsgBox "Resolve file error before continuing."
        End If
    Else
        MsgBox Err.Number & ": " & Err.Description
    End If
End Sub
Private Function ShowFileDialog(fName As String) As String
    Dim fd As FileDialog
    Dim I As Integer
    Set fd = Application.FileDialog(msoFileDialogOpen)
    With fd
        .AllowMultiSelect = False
        .FilterIndex = 2
        .Title = "Find File"
        .InitialFileName = fName
        If .Show = -1 Then
            ShowFileDialog = .SelectedItems(1)
        Else
            ShowFileDialog = "Cancelled"
        End If
    End With
    Set fd = Nothing
End Function



Read text file

 
Public Sub ReadTxtFile()
    Dim myFileSystemObject As FileSystemObject
    Dim aFile As TextStream
    Set myFileSystemObject = New FileSystemObject
    Set aFile = myFileSystemObject.OpenTextFile("C:\myFile.txt", 1)
    Do While Not aFile.AtEndOfStream
        Debug.Print aFile.ReadLine
    Loop
    aFile.Close     "Close file and convert lines of data to columns
    Set myFileSystemObject = Nothing
    Set aFile = Nothing
End Sub



The TextStream Object

 
Sub CreateTxtFile()
    Dim myFileSystemObject As FileSystemObject
    Dim aFile As TextStream
    Set myFileSystemObject = New FileSystemObject
    Set aFile = myFileSystemObject.CreateTextFile("C:\myFile.txt", True)
    aFile.WriteLine
    aFile.Write ("asdf")    "Write tab-delimited text
    aFile.Close         "Close file and clear memory
    Set myFileSystemObject = Nothing
    Set aFile = Nothing
End Sub