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. |
検索キーワード及びサンプルコードの別名(機能名) |