| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

Excel VBA File Utility

提供: MyMemoWiki
2020年2月15日 (土) 08:02時点におけるPiroto (トーク | 投稿記録)による版
ナビゲーションに移動 検索に移動

Excel VBA File Utility

Excel VBAテンプレート:Category VBAソース片

FileUtil.cls

  1. Option Explicit
  2.  
  3. Private Const INVALID_FILENO As Integer = -1
  4.  
  5. ' 処理対象のファイル名を保持
  6. Private m_Filename As String
  7.  
  8. ' 処理中のファイル番号を保持
  9. Private m_FileNo As Integer
  10. '
  11. ' 初期化
  12. '
  13. Private Sub Class_Initialize()
  14. Call setFileNo(INVALID_FILENO)
  15.  
  16. End Sub
  17.  
  18. '
  19. ' 終了処理
  20. '
  21. Private Sub Class_Terminate()
  22.  
  23. Call closeFile
  24.  
  25. End Sub
  26. '
  27. ' ファイルが開かれているか
  28. '
  29. ' @return 開かれていれば True
  30. '
  31. Public Function isOpen() As Boolean
  32.  
  33. isOpen = (getFileNo > 0)
  34.  
  35. End Function
  36. '
  37. ' ファイルを開く
  38. '
  39. ' @param fileName
  40. ' @param mode
  41. ' @return 成功した場合True
  42. '
  43. Public Function openFile(fileName As String, mode As FileMode) As Boolean
  44. On Error GoTo errHandler
  45. openFile = True
  46. Call setFilename(fileName)
  47. Call setFileNo(FreeFile)
  48. Select Case mode
  49. Case FileMode.InputMode
  50. Open getFilename For Input As getFileNo
  51. Case FileMode.OutputMode
  52. Open getFilename For Output As getFileNo
  53. Case FileMode.AppendMode
  54. Open getFilename For Append As getFileNo
  55. Case Else
  56. openFile = False
  57. End Select
  58. Exit Function
  59. errHandler:
  60. openFile = False
  61. End Function
  62. '
  63. ' ファイルから1行読込む
  64. '
  65. ' @param line 読み込んだ行を格納
  66. ' @return データがこれ以上ない場合False
  67. '
  68. Public Function readLine(ByRef line As String) As Boolean
  69. Dim ret As Boolean
  70. ret = Not isEOF()
  71. If ret Then
  72. Line Input #getFileNo(), line
  73. End If
  74. readLine = ret
  75. End Function
  76. '
  77. ' ファイルがEOFに達しているか
  78. '
  79. ' @return ファイルがEOFに達している場合True
  80. '
  81. Public Function isEOF() As Boolean
  82.  
  83. isEOF = EOF(getFileNo())
  84. End Function
  85. '
  86. ' 出力(改行しない)
  87. '
  88. ' @param str 出力内容
  89. '
  90. Public Sub print_(str As String)
  91.  
  92. Print #getFileNo(), str;
  93.  
  94. End Sub
  95. '
  96. ' 1行出力
  97. '
  98. ' @param str 出力内容
  99. '
  100. Public Sub println(str As String)
  101.  
  102. Print #getFileNo(), str
  103.  
  104. End Sub
  105. '
  106. ' ファイルを閉じる
  107. '
  108. Public Sub closeFile()
  109. Close getFileNo()
  110.  
  111. End Sub
  112.  
  113. '
  114. ' ファイル名の設定
  115. '
  116. ' @param newFileName
  117. '
  118. '
  119. Private Sub setFilename(newFileName As String)
  120.  
  121. m_Filename = newFileName
  122.  
  123. End Sub
  124. '
  125. ' ファイル名の取得
  126. '
  127. ' @param ファイル名
  128. '
  129. Public Function getFilename() As String
  130.  
  131. getFilename = m_Filename
  132.  
  133. End Function
  134. '
  135. ' ファイルNoの設定
  136. '
  137. ' @param ファイルNo
  138. '
  139. Private Sub setFileNo(newFileNo As Integer)
  140.  
  141. m_FileNo = newFileNo
  142.  
  143. End Sub
  144. '
  145. ' ファイルNoの取得
  146. '
  147. ' @return ファイルNo
  148. '
  149. Public Function getFileNo() As Integer
  150.  
  151. getFileNo = m_FileNo
  152.  
  153. End Function
標準モジュールに
  1. '----------------
  2. 'ファイルモード
  3. '----------------
  4. Public Enum FileMode
  5. InputMode = &H1&
  6. OutputMode = &H2&
  7. AppendMode = &H3&
  8. End Enum

テンプレート:Ref FileUtil.cls