3.フォルダー(ディレクトリ)に関するパス操作色々 |
1.特殊フォルダーのパスを取得(FileSystemObject による) 2.特殊フォルダーのパスを取得(WshShell による) 3.カレントフォルダー/プログラムを起動したフォルダーのパスを取得 4.フルパス文字列からディレクトリ名を取得する 5.相対パスから絶対パスを取得する 6.2つのパス文字列を結合する 7.指定のフォルダーのルートドライブ名を取得する |
下記プログラムコードに関する補足・注意事項 動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6) Option :[Option Explicit] 参照設定:Microsoft Scripting Runtime (scrrun.dll) / Windows Script Host Object Model(wshom.ocx) 参照設定方法参照 使用 API:なし その他 : : |
1.特殊フォルダーのパスを取得(FileSystemObject による) |
Private Sub Command1_Click() Dim Fso As New FileSystemObject 'Windows のパスを取得 Debug.Print Fso.GetSpecialFolder(WindowsFolder) 'C:\Windows 'System フォルダーのパスを取得 Debug.Print Fso.GetSpecialFolder(SystemFolder) 'C:\Windows\System32 'Temporary フォルダーのパスを取得 Debug.Print Fso.GetSpecialFolder(TemporaryFolder) 'C:\Users\UserName\AppData\Local\Temp End Sub 残念ながら、上記3個のフォルダーのパスしか取得できません。 |
2.特殊フォルダーのパスを取得(WshShell による) |
Option Explicit Private Sub List1_Click() Dim oWshShell As New WshShell Text1.Text = oWshShell.SpecialFolders(List1.List(List1.ListIndex)) End Sub Private Sub Form_Load() '取得できる特殊フォルダーには下記のようなものがあります。 List1.AddItem "AllUsersDesktop" List1.AddItem "AllUsersPrograms" List1.AddItem "AllUsersStartup" List1.AddItem "AllUsersStartMenu" List1.AddItem "Desktop" List1.AddItem "Favorites" List1.AddItem "Fonts" List1.AddItem "MyDocuments" List1.AddItem "NetHood" List1.AddItem "Programs" List1.AddItem "PrintHood" List1.AddItem "Recent" List1.AddItem "SendTo" List1.AddItem "StartMenu" List1.AddItem "Startup" List1.AddItem "Templates" List1.AddItem "AppData" List1.AddItem "Temporary Internet Files" End Sub 図1.上記実行結果 こちらは、上記のように色々なフォルダーのパスが取得できます、それぞれの環境で試して見て下さい。 |
3.カレントフォルダー/プログラムを起動したフォルダーのパスを取得 |
Private Sub Command1_Click() 'カレントフォルダーのパスを取得 Debug.Print CurDir$ 'C:\Program Files\Microsoft Visual Studio\VB98 'カレントフォルダーのパスを取得 Debug.Print App.Path '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 プログラムの起動直後に取得すればプログラムを起動したフォルダーのパスになります、但し、カレントフォルダーは変更される場合がありますので、必ず起動直後に取得して変数に保存しておいて下さい。 |
4.フルパス文字列からディレクトリ名を取得する |
Private Sub Command1_Click() '------------------------- FileSystemObject での操作 ------------------------- Dim Fso As New FileSystemObject 'フルパス文字列からディレクトリ名を取得する Debug.Print Fso.GetParentFolderName("c:\test\test2\test.txt") 'c:\test\test2 Debug.Print Fso.GetBaseName("c:\test\test2") 'test2 End Sub |
5.相対パスから絶対パスを取得する |
Private Sub Command1_Click() '------------------------- FileSystemObject での操作 ------------------------- Dim Fso As New FileSystemObject '相対パスから絶対パスを取得する Debug.Print Fso.GetAbsolutePathName(".") 'C:\Program Files\Microsoft Visual Studio\VB98 Debug.Print Fso.GetAbsolutePathName("..\..\") 'C:\Program Files End Sub |
6.2つのパス文字列を結合する |
Private Sub Command1_Click() '------------------------- FileSystemObject での操作 ------------------------- Dim Fso As New FileSystemObject '2つのパス文字列を結合する Debug.Print Fso.BuildPath(Fso.GetAbsolutePathName("..\..\"), "test.txt") 'C:\Program Files\test.txt End Sub |
7.指定のフォルダーのルートドライブ名を取得する |
Private Sub Command1_Click() '------------------------- FileSystemObject での操作 ------------------------- Dim Fso As New FileSystemObject '指定のフォルダーのルートドライブ名を取得する Debug.Print Fso.GetDriveName(App.Path) 'C: End Sub |
検索キーワード及びサンプルコードの別名(機能名) |