トップ 一覧 ping 検索 ヘルプ RSS ログイン

Excel VBA File Utilityの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!!Excel VBA File Utility
[Excel VBA]{{category VBAソース片}}

'''FileUtil.cls'''
!!'''FileUtil.cls'''
 Option Explicit
 
 Private Const INVALID_FILENO As Integer = -1
 
 ' 処理対象のファイル名を保持
 Private m_Filename  As String
 
 ' 処理中のファイル番号を保持
 Private m_FileNo    As Integer
 '
 ' 初期化
 '
 Private Sub Class_Initialize()
     
     Call setFileNo(INVALID_FILENO)
 
 End Sub
 
 '
 ' 終了処理
 '
 Private Sub Class_Terminate()
 
     Call closeFile
 
 End Sub
 '
 ' ファイルが開かれているか
 '
 ' @return 開かれていれば True
 '
 Public Function isOpen() As Boolean
 
     isOpen = (getFileNo > 0)
 
 End Function
 '
 ' ファイルを開く
 '
 ' @param fileName
 ' @param mode
 ' @return 成功した場合True
 '
 Public Function openFile(fileName As String, mode As FileMode) As Boolean
     On Error GoTo errHandler
     openFile = True
     Call setFilename(fileName)
     Call setFileNo(FreeFile)
     
     Select Case mode
         Case FileMode.InputMode
             Open getFilename For Input As getFileNo
             
         Case FileMode.OutputMode
             Open getFilename For Output As getFileNo
         
         Case FileMode.AppendMode
             Open getFilename For Append As getFileNo
             
         Case Else
             openFile = False
     End Select
     
     Exit Function
 errHandler:
     openFile = False
 End Function
 '
 ' ファイルから1行読込む
 '
 ' @param line 読み込んだ行を格納
 ' @return データがこれ以上ない場合False
 '
 Public Function readLine(ByRef line As String) As Boolean
         
     Dim ret As Boolean
     
     ret = Not isEOF()
     
     If ret Then
         Line Input #getFileNo(), line
     End If
     
     readLine = ret
     
 End Function
 '
 ' ファイルがEOFに達しているか
 '
 ' @return ファイルがEOFに達している場合True
 '
 Public Function isEOF() As Boolean
 
     isEOF = EOF(getFileNo())
     
 End Function
 '
 ' 出力(改行しない)
 '
 ' @param str 出力内容
 '
 Public Sub print_(str As String)
 
     Print #getFileNo(), str;
 
 End Sub
 '
 ' 1行出力
 '
 ' @param str 出力内容
 '
 Public Sub println(str As String)
 
     Print #getFileNo(), str
 
 End Sub
 '
 ' ファイルを閉じる
 '
 Public Sub closeFile()
     
     Close getFileNo()
 
 End Sub
 
 '
 ' ファイル名の設定
 '
 ' @param newFileName
 '
 '
 Private Sub setFilename(newFileName As String)
 
     m_Filename = newFileName
 
 End Sub
 '
 ' ファイル名の取得
 '
 ' @param ファイル名
 '
 Public Function getFilename() As String
 
     getFilename = m_Filename
 
 End Function
 '
 ' ファイルNoの設定
 '
 ' @param ファイルNo
 '
 Private Sub setFileNo(newFileNo As Integer)
 
     m_FileNo = newFileNo
 
 End Sub
 '
 ' ファイルNoの取得
 '
 ' @return ファイルNo
 '
 Public Function getFileNo() As Integer
 
     getFileNo = m_FileNo
 
 End Function

::標準モジュールに
 '----------------
 'ファイルモード
 '----------------
 Public Enum FileMode
     InputMode = &H1&
     OutputMode = &H2&
     AppendMode = &H3&
 End Enum

{{ref FileUtil.cls}}