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() Debug.Print App.Path 'C:\Program Files\Microsoft Visual Studio\VB98 Debug.Print CurDir$ 'C:\Program Files\Microsoft Visual Studio\VB98 '---------- FileSystemObject での操作 ---------- Dim Fso As New FileSystemObject Debug.Print Fso.GetFolder(".").Path 'C:\Program Files\Microsoft Visual Studio\VB98 End Sub |
2.フォルダーの有無を調べる |
'フォルダーの有無を調べる Private Sub Command1_Click() Dim myFolder As String myFolder = Dir$("c:\test", vbDirectory) If Len(myFolder) > 1 Then MsgBox "フォルダーが見つかりました" Else MsgBox "フォルダーが見つかりません" End If '---------- FileSystemObject での操作 ---------- Dim Fso As New FileSystemObject If Fso.FolderExists("C:\Test1") = True Then MsgBox "フォルダーが見つかりました" Else MsgBox "フォルダーが見つかりません" End If End Sub |
3.新しいフォルダーを作成する |
Private Sub Command1_Click() Dim myFolder As String myFolder = Dir$("c:\test", vbDirectory) If Len(myFolder) > 1 Then '指定したフォルダーが既に存在していた場合は、エラーが発生するので '事前にフォルダーの有無を調査 MsgBox "すでにフォルダーが存在します。" Else MkDir$ "C:\Test" MsgBox "フォルダーを作成しました。" End If '---------- FileSystemObject での操作 ---------- Dim Fso As New FileSystemObject If Fso.FolderExists("C:\Test1") = True Then '指定したフォルダーが既に存在していた場合は、エラーが発生するので '事前にフォルダーの有無を調査 MsgBox "すでにフォルダーが存在します。" Else Fso.CreateFolder "C:\Test1" MsgBox "フォルダーを作成しました。" End If End Sub どちらの機能も "C:\Test\Test1" のような階層のフォルダーを一発で作成する事はできません。(エラーが発生) |
4.フォルダーを削除する |
Private Sub Command1_Click() Dim myFolder As String myFolder = "c:\test" If Len(Dir$(myFolder, vbDirectory)) > 1 Then '指定したフォルダー内にファイルが存在していると、エラーが発生します。 RmDir$ myFolder End If 上記では、実用的ではないので下記を使用された方が便利かと思います。 '---------- FileSystemObject での操作 ---------- Dim Fso As New FileSystemObject Dim myFolder As String myFolder = "c:\test" If Fso.FolderExists(myFolder) = True Then Fso.GetFolder(myFolder).Delete Fso.DeleteFolder myFolder, True End If End Sub Delete メソッドを使った方法も DeleteFolder メソッドを使って行った処理とまったく同じです。 |
5.フォルダーをコピーする |
Private Sub Command1_Click() '---------- FileSystemObject での操作 ---------- Dim Fso As New FileSystemObject Dim myFolder As String myFolder = "c:\test" If Fso.FolderExists(myFolder) = True Then '"c:\test" のフォルダーがコピーされ "D:\test1" というフォルダーが作成されます。 Fso.GetFolder(myFolder).Copy "D:\test1", True Fso.CopyFolder myFolder, "G:\test1", True End If End Sub |
6.フォルダーを移動する |
Private Sub Command1_Click() '---------- FileSystemObject での操作 ---------- Dim Fso As New FileSystemObject Dim myFolder As String myFolder = "c:\test\test2" If Fso.FolderExists(myFolder) = True Then '異なるドライブ間への移動はできません(エラーが発生する) Fso.GetFolder(myFolder).Move "c:\" Fso.MoveFolder myFolder, "c:\" End If End Sub 従ってコピーしてから元のフォルダーを削除する事になります。 |
7.フォルダーの作成日時/アクセス日時/更新日時を取得する |
Private Sub Command1_Click() '------------------------- FileSystemObject での操作 ------------------------- Dim Fso As New FileSystemObject 'フォルダーが作成された日付と時刻を取得 Debug.Print Fso.GetFolder("c:\test").DateCreated '2013/07/13 11:12:26 'フォルダーが最後にアクセスされたときの日付と時刻を取得 Debug.Print Fso.GetFolder("c:\test").DateLastAccessed '2013/07/14 10:33:08 'フォルダーが最後に更新されたときの日付と時刻を取得 Debug.Print Fso.GetFolder("c:\test").DateLastModified '2013/07/14 10:33:08 End Sub |
8. |
9. |
10. |
11. |
12. |
13. |
14. |
15. |
検索キーワード及びサンプルコードの別名(機能名) |