ホーム > カテゴリ > Excel・VBA >

オープンしたファイルのファイルモードを返す - FileAttr関数 [ExcelのVBA]

FileAttr関数

FileAttr関数はオープンしたファイルのファイルモードを返します。

分類ファイル

書式

FileAttr(filenumber[,returntype])

filenumberFreeFile関数で取得したファイル番号
returntype戻り値のタイプ。OSが32bitの場合は1、16bitは2を指定する。省略した場合は1となる。

[戻り値]

1Inputモード
2Outputモード
4Randomモード
8Appendモード
32Binaryモード

使用例

次はCドライブにある「test.txt」ファイルを読み込んだ例となります。

Private Sub CommandButton1_Click()
  Dim fileNo As Integer  ' ファイル番号
  Dim buffer As String   ' 一時的に文字列を格納
  Dim Str As String      ' ファイルの内容
  Dim filename As String ' ファイル名
   
  ' 読み込むファイル名
  filename = "C:\test.txt"
  
  Debug.Print "ファイル名:" & filename
  Debug.Print "最終更新日:" & FileDateTime(filename)

  ' ファイルの属性
  Debug.Print "ファイルの属性に「通常ファイル」があります。"
 
  If ((GetAttr(filename) And vbReadOnly) = vbReadOnly) Then
    Debug.Print "ファイルの属性に「読み取り専用」があります。"
  End If

  If ((GetAttr(filename) And vbHidden) = vbHidden) Then
    Debug.Print "ファイルの属性に「隠しファイル」があります。"
  End If

  If ((GetAttr(filename) And vbSystem) = vbSystem) Then
    Debug.Print "ファイルの属性に「システムファイル」があります。"
  End If

  If ((GetAttr(filename) And vbDirectory) = vbDirectory) Then
    Debug.Print "ファイルの属性に「フォルダ」があります。"
  End If
 
  If ((GetAttr(filename) And vbArchive) = vbArchive) Then
    Debug.Print "ファイルの属性に「アーカイブ」があります。"
   End If
 
  If ((GetAttr(filename) And vbAlias) = vbAlias) Then
    Debug.Print "ファイルの属性に「エイリアス」があります。"
  End If
  
  ' ファイルを開く為のファイル番号を取得
  fileNo = FreeFile
  
  ' 指定されたファイルを開く
  Open filename For Input As #fileNo
  
  ' ファイルモード
  Select Case FileAttr(fileNo)
    Case 1: Debug.Print "ファイルモード:Inputモード"
    Case 2: Debug.Print "ファイルモード:Outputモード"
    Case 4: Debug.Print "ファイルモード:Randomモード"
    Case 8: Debug.Print "ファイルモード:Appendモード"
    Case 32: Debug.Print "ファイルモード:Binaryモード"
  End Select
  
  Debug.Print "LOFによるファイルサイズ取得:" & CStr(LOF(fileNo)) & "バイト"
  Debug.Print "FileLenによるファイルサイズ取得:" & CStr(FileLen(filename)) & "バイト"
  
  ' ファイルがEOF(ファイルの終端)になるまでループをする
  Do Until EOF(fileNo)
    
    ' ファイルの位置
    Debug.Print "Seekによる現在位置取得:" & CStr(Seek(fileNo))
    
    ' ファイルから一行づつbufferに読み込む
    Line Input #fileNo, buffer
    
    ' 読み込んだファイル内容を格納する
    Str = Str + buffer + vbCrLf
  Loop
  
  Close #fileNo
 
  Debug.Print ""
  Debug.Print "--- 以下はファイル内容 ---"
  Debug.Print Str
  
End Sub

結果

※UTF8に対応したファイルの読み込みは「ファイルの操作(Shift-JIS/UTF8対応)」の記事をご覧ください。

Visual Basicのファイル換関数

関数名内容
EOFファイルの現在位置が終端の場合にTrueを返す
FileAttrオープンしたファイルのファイルモードを返す
FileDateTimeファイルの作成日時または最終更新日時を返す
FileLenファイルのサイズを返す
FreeFileファイルをオープンする為のファイル番号を返す
GetAttrファイルやフォルダの属性を返す
Input/InputBファイルから指定文字数を読み込む
LOFオープンしているファイルの長さを返す
Seekオープンしているファイルの位置を返す

エクセル講座のクイックリンク

ホーム 新機能 基本(初級) 基本(中級) 基本(上級) 関数 マクロ VBA TIPS





関連記事



公開日:2015年07月08日
記事NO:01159