アクセス上位ページ
 
最近の更新内容
(3).FSOによるフォルダ操作 ⇐ [PREV]
[NEXT] ⇒ (3)-b.FSOによるフォルダ操作A

Excel VBA ≫ 3.FSO - FSOによるフォルダ操作(3)-a.FSOによるフォルダ操作@

【ページ内リンク】

ファイルシステムオブジェクトを使用したフォルダ操作@

このページでは下表のメソッドについて説明します。 これらはすべて FileSystemObjectメソッドになります。


内容 メソッド
フォルダオブジェクト取得 fso.GetFolder
フォルダ存在チェック fso.FolderExists
親フォルダ取得 fso.GetParentFolderName
ドライブ名取得 fso.GetDriveName
フォルダ作成 fso.CreateFolder




  • 【構文】
    fso.GetFolder ( Path )
    fso.FolderExists ( Path )
    fso.GetParentFolderName ( Path )
    fso.GetDriveName ( Path )
    fso.CreateFolder ( Path )

  • 引数名 省略 説明
    Path × フォルダパスを指定します。 フォルダパスは絶対パス、相対パス、ネットワークパスのいずれも指定可能です。 相対パスを指定した場合はカレントフォルダ(⇒CurDir関数)が基準となります。


使用方法解説

  • fso.GetFolder ( Path )
  • 引数で指定したフォルダパスのフォルダオブジェクトを返します。 フォルダパスは事前に次の fso.FolderExists でチェックしておくとよいでしょう。

    <使用例>
    Dim fso       As Object
    Dim folderObj As Object
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set folderObj = fso.GetFolder("C:\Users\xxx\Desktop")
    
    'オブジェクト変数クリア
    Set fso = Nothing
    Set folderObj = Nothing
    


  • fso.FolderExists ( Path )
  • 引数で指定したフォルダパスの存在チェックを行い、結果を True または False で返します。

    <使用例>
    Dim fso     As Object
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    if Not fso.FolderExists("C:\Users\xxx\Desktop") then
        MsgBox "フォルダが存在しません。処理を中止します。"
        End
    End If
    
    'オブジェクト変数クリア
    Set fso = Nothing
    


  • fso.GetParentFolderName ( Path )
  • 引数で指定したフォルダパスの親フォルダを返します。

    <使用例>
    Dim fso     As Object
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    Debug.Print fso.GetFolderName("C:\Users\xxx\Desktop")
    
    'オブジェクト変数クリア
    Set fso = Nothing
    

    <実行結果(イミディエイトウィンドウ)>
    C:\Users\xxx
    


  • fso.GetDriveName ( Path )
  • 引数で指定したフォルダパスのドライブ名を返します。 ネットワーク上のパスを指定した場合は、ネットワーク共有名( ¥¥[サーバー名]¥[共有フォルダ名] )を返却します。

    <使用例>
    Dim fso     As Object
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    Debug.Print fso.GetFolderName("C:\Users\xxx\Desktop")
    
    'オブジェクト変数クリア
    Set fso = Nothing
    

    <実行結果(イミディエイトウィンドウ)>
    C:
    
    上記で解説した fso.GetParentFolderName と fso.GetDriveName については単純に特定文字列の抽出を行っているにすぎず、存在しないパスでも正常に処理されてしまいます。

  • fso.CreateFolder ( Path )
  • 引数で指定したフォルダを作成します。指定したフォルダが既に存在しているとエラーとなってしまうので、 必要に応じて作成するフォルダが存在しないことを確認するとよいでしょう。

    <使用例>
    Desktop フォルダの配下に new フォルダを新規作成する例です。
    Dim fso     As Object
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    fso.CreateFolder("C:\Users\xxx\Desktop\new")
    
    'オブジェクト変数クリア
    Set fso = Nothing
    


  • フォルダのパス情報を表示する例
  • ローカルPC上のフォルダと、ネットワーク上のフォルダのパス情報を出力する例です。 フォルダが存在していればパス情報をイミディエイトウィンドウへすべて表示します。 また、CreateObject 関数の戻り値を直接 With ステートメントに指定することで、 オブジェクト変数(fso)の宣言と Set ステートメントによる格納の手間を省いています。
    Sub sample_fs031_01()
        Dim myPath  As String
    
        myPath = "C:\Users\Public\vba"
        Call printFolderPathInfo(myPath)
    
        'ネットワーク上のパスを指定
        myPath = "\\SHARE-PC\share\test\2013"
        Call printFolderPathInfo(myPath)
    
    End Sub
    
    Private Sub printFolderPathInfo(strPath As String)
        Debug.Print ""  '空白行
        Debug.Print "Path     ->" & strPath
    
        With CreateObject("Scripting.FileSystemObject")
            Debug.Print "Exists   ->" & .FolderExists(strPath)
    
            If .FolderExists(strPath) Then
                Debug.Print "PFolder  ->" & .GetParentFolderName(strPath)
                Debug.Print "DriveName->" & .GetDriveName(strPath)
            End If
        End With
    End Sub
    

    <実行結果(イミディエイトウィンドウ)>
    ※フォルダが存在する場合の実行結果です。
    
    Path     ->C:\Users\Public\vba
    Exists   ->True
    PFolder  ->C:\Users\Public
    DriveName->C:
    
    Path     ->\\SHARE-PC\share\test\2013
    Exists   ->True
    PFolder  ->\\SHARE-PC\share\test
    DriveName->\\SHARE-PC\share
    


Page
Top