Excel VBA:同じフォルダのテキストファイルの内容を読み込むクラス

Excel VBA

サンプルコード

Option Explicit

Private st As String

Public Function Read(ByVal file_name As String, Optional ByVal result As Boolean = True) As Boolean

    Dim sf As Object
    Dim ts As Object
    On Error GoTo ErrorHandler
    Set sf = CreateObject("Scripting.FileSystemObject")
    Set ts = sf.GetFile(ThisWorkbook.Path & "\" & file_name).OpenAsTextStream(1)
    st = ts.ReadAll
    ts.Close
    
Finally:

    If Not ts Is Nothing Then Set ts = Nothing
    If Not sf Is Nothing Then Set sf = Nothing
    Read = result
    Exit Function
    
ErrorHandler:

    result = False
    Call ShowError(Err)
    GoTo Finally
End Function

Public Function GetText() As String
    GetText = st
End Function

Public Sub ShowError(ByVal e As ErrObject)

    Dim s As String
    
    s = ""
    s = s & "ErrorNumber:" & CStr(e.Number) & ";" & vbCrLf
    s = s & "ErrorDescription:" & e.Description & ";" & vbCrLf
    s = s & "ErrorHelpFile:" & e.HelpFile & ";" & vbCrLf
    s = s & "ErrorHelpContext:" & e.HelpContext & ";"
    MsgBox s
End Sub

TextFileReaderと名付けて使用しているクラス。

Excel VBAにはヒアドキュメントが存在しない。
そのため長い文字列(たとえばSQLなど)は、メンテナンスしやすいように外部テキストファイルに記入しておいて、使用する際に読み込むようにする。

コメント