VBレスキュー(花ちゃん)
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ各掲示板

リンク元へ戻ります。 ファイル関係のメニュー
1.FileSystemObject のファイルに関するメソッド・プロパティについて
2.ファイルに関する基本的なワンポイントサンプル集
3.フォルダー内のファイル名を読み込む(Dir 関数の使用例)
4.指定のファイルパスを検索する
5.エクスプローラーからファイル名をドラッグ・アンド・ドロップで取得する
6.プログラムから HTML ヘルプファイルを開く及び閉じる
7.Windows ヘルプ形式のヘルプファイルの目次トピックを表示する方法
8.ファイルに関するパス操作色々
9.ファイル・フォルダーをごみ箱へ
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.その他、当サイト内に掲載のファイルに関するサンプル


2.ファイルに関する基本的なワンポイントサンプル集
1.ファイルの有無を調べる
2.ファイルを削除する
3.ファイルをコピーする
4.ファイルを移動する
5.ファイルの属性を取得する
6.ファイルの属性を設定する
7.ファイル名の変更
8.ファイルの作成日時・更新日時・アクセス日時等を取得する
9.ファイルサイズを調べる
10.ファイルが格納されているドライブ名を取得する
11.
12.
13.
14.
15.


 下記プログラムコードに関する補足・注意事項 
動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6) Excel 2010
Option :[Option Explicit]
参照設定:Microsoft Scripting Runtime (scrrun.dll)        参照設定方法参照
使用 API:

その他 :
    :
このページのトップへ移動します。 1.ファイルの有無を調べる   

Private Sub Command1_Click()
'ファイルの有無を調べる
  Dim MyFile As String
  MyFile = Dir$("c:\Test\test1.txt")
  If Len(MyFile) > 1 Then
    MsgBox "ファイルが見つかりました"
  Else
    MsgBox "ファイルが見つかりません"
  End If

'---------- FileSystemObject での操作 ----------

  Dim Fso    As New FileSystemObject
  If Fso.FileExists("c:\Test\test.txt") = True Then
    MsgBox "ファイルが見つかりました"
  Else
    MsgBox "ファイルが見つかりません"
  End If
End Sub

このページのトップへ移動します。 2.ファイルを削除する

Private Sub Command1_Click()
'ファイルを削除する

  'Kill "test02.txt"    'ファイル名が見つからないとエラーが発生します。

  'ワイルドカード使用可
  'Kill "*.*"

  Dim MyFile As String

  MyFile = Dir$("c:\test\test.txt")
  If Len(MyFile) > 1 Then
    Kill "c:\test\test.txt"
    MsgBox "ファイルを削除しました。"
  Else
    MsgBox "ファイルが見つかりません"
  End If

'---------- FileSystemObject での操作 ----------

  Dim Fso    As New FileSystemObject
  If Fso.FileExists("c:\Test\readme.txt") = True Then

    'こちらは、ワイルドカードは使用できません。
    Fso.GetFile("c:\Test\*.txt").Delete

    'パスの最後の構成要素内ではワイルドカード文字を使用できます。
    Fso.DeleteFile "c:\Test\*.txt", True
    MsgBox "ファイルを削除しました。"
  Else
    MsgBox "ファイルが見つかりません"
  End If
End Sub

このページのトップへ移動します。 3.ファイルをコピーする

Private Sub Command1_Click()
'ファイルをコピーする
  FileCopy "c:\test\test.txt", "c:\test\test1.txt"

'---------- FileSystemObject での操作 ----------

  Dim Fso    As New FileSystemObject
  Fso.GetFile("c:\Test\test.txt").Copy "c:\test\test2.txt"

  Fso.CopyFile "c:\Test\test.txt", "c:\Test\test3.txt"
End Sub

このページのトップへ移動します。 4.ファイルを移動する

Private Sub Command1_Click()

'---------- FileSystemObject での操作 ----------

  Dim Fso    As New FileSystemObject
  Fso.GetFile("c:\Test\test.txt").Move "c:\test1\test1.txt"

  Fso.MoveFile "c:\Test\test1.txt", "c:\Test1\test3.txt"
End Sub

このページのトップへ移動します。 5.ファイルの属性を取得する

Private Sub Command1_Click()
'属性の取得
  Dim MyAttr As Long
  MyAttr = GetAttr("C:\Test\Test.txt")
  'I = 8192
  Debug.Print fGetAttribute(MyAttr), MyAttr  'AHRI      8227

  MyAttr = GetAttr("C:\Test")
  Debug.Print fGetAttribute(MyAttr), MyAttr  'ID       8208

'---------- FileSystemObject での操作 ----------

  Dim Fso    As New FileSystemObject
  MyAttr = Fso.GetFile("C:\Test\Test.txt").Attributes
  Debug.Print fGetAttribute(MyAttr), MyAttr  'AHR      35

End Sub


エクスプローラーの属性のように文字で取得する場合
Private Function fGetAttribute(ByVal at As Integer) As String
  If at And vbNormal Then
    fGetAttribute = fGetAttribute & ""
  End If
  If at And vbArchive Then
    fGetAttribute = fGetAttribute & "A"
  End If
  If at And vbHidden Then
    fGetAttribute = fGetAttribute & "H"
  End If
  If at And vbReadOnly Then
    fGetAttribute = fGetAttribute & "R"
  End If
  If at And vbSystem Then
    fGetAttribute = fGetAttribute & "S"
  End If
  If at And &H2000 Then
    fGetAttribute = fGetAttribute & "I"
  End If
  If at And vbDirectory Then
    fGetAttribute = fGetAttribute & "D"
  End If
End Function

FileSystemObject で取得した場合は、インデックス属性が取得できません。

このページのトップへ移動します。 6.ファイルの属性を設定する

Private Sub
Command1_Click()
'属性の設定
  SetAttr "C:\Test\Test.txt", vbReadOnly Or vbArchive     'AR       33


'---------- FileSystemObject での操作 ----------
  Dim Fso    As New FileSystemObject
  Fso.GetFile("C:\Test\Test.txt").Attributes = vbReadOnly   'R       1

End Sub

このページのトップへ移動します。 7.ファイル名の変更

Private Sub Command1_Click()
'ファイル名の変更
  Debug.Print Dir$("c:\test\*.txt")  'test.txt

  Name "c:\test\test.txt" As "c:\test\test01.txt"
  Debug.Print Dir$("c:\test\*.txt")  'test01.txt

'---------- FileSystemObject での操作 ----------
  Dim Fso    As New FileSystemObject
  Fso.GetFile("c:\Test\test01.txt").Move "c:\test\test123.txt"
  Debug.Print Dir$("c:\test\*.txt")  'test123.txt

  Fso.GetFile("c:\Test\test123.txt").Name = "test.txt"
  Debug.Print Dir$("c:\test\*.txt")  'test.txt
End Sub

このページのトップへ移動します。 8.ファイルの作成日時・更新日時・アクセス日時等を取得する

Private Sub Command1_Click()

  'ヘルプでは、指定したファイルの作成日時または最後に修正した日時を返すとなっていますが
  '実際は、エクスプローラーでの表示の更新日時になります。(Windows 7)
  Debug.Print FileDateTime("c:\test\test.txt")
  'VB6.0 の標準機能では、上記だけしか取得できません。

'---------- FileSystemObject での操作 ----------

  Dim Fso    As New FileSystemObject
  'ファイルの作成日時を取得
  Debug.Print Fso.GetFile("c:\Test\test.txt").DateCreated
  'ファイルのアクセス日時を取得
  Debug.Print Fso.GetFile("c:\Test\test.txt").DateLastAccessed
  'ファイルの更新日時を取得
  Debug.Print Fso.GetFile("c:\Test\test.txt").DateLastModified
'どちらの機能も取得のみで設定はできません。
End Sub

いつからかは知りませんが、最近アクセス日時の更新が行われないように設定が変更されたようです。私的には、更新日時よりアクセス日時が古いのには違和感を感じます、パフォーマンスの向上の為に変更されたようですが、それなら、アクセス日時の表示もされないようにしてくれないと、表示している以上は、違和感を感じるのは私だけではないかと思うのですが、仕方がなくレジストリで設定を元に状態に戻す事にしました。(2013/07/17)

注意、ファイルのアクセス日時を取得して、ファイルの状態を判断されているようなプログラムを作成しておられる方は見直しをされた方が無難かと思います。(2013/07/17)

このページのトップへ移動します。 9.ファイルサイズを調べる

Private Sub Command1_Click()

  Debug.Print FileLen("c:\test\test.txt")

'---------- FileSystemObject での操作 ----------

  Dim Fso    As New FileSystemObject
  Debug.Print Fso.GetFile("c:\Test\test.txt").Size

End Sub

このページのトップへ移動します。 10.ファイルが格納されているドライブ名を取得する

Private Sub Command1_Click()
'---------- FileSystemObject での操作 ----------

  Dim Fso    As New FileSystemObject
  Debug.Print Fso.GetFile("c:\Test\test.txt").Drive  'c:

End Sub

このページのトップへ移動します。 11.


このページのトップへ移動します。 12.


このページのトップへ移動します。 13.


このページのトップへ移動します。 14.


このページのトップへ移動します。 15.


このページのトップへ移動します。 検索キーワード及びサンプルコードの別名(機能名)





このページのトップへ移動します。