まりふのひと

Excel VBA/FileSystemObjectで全てのフォルダを取得するコードで「書き込みができません」

Windows7 の Excel2003 で、文末のサンプルコードの sub「test」を実行すると、


上記は本番のコードで出したもの。
エラーコード 70/書き込みができません。のエラーが出る。

  1. 「パブリックド キュメント」下のフォルダーをリストアップするとエラーが出る。
     出力されたフォルダーの中に下記の存在しないはずのフォルダーがある。
    • C:\Users\Public\Documents\My Music
    • C:\Users\Public\Documents\My Pictures
    • C:\Users\Public\Documents\My Videos
  2. 「パブリックド ピクチャ」では問題ない。
  3. 「マイドキュメント」等では問題ない。

ググったら、似たような質問が OKWave にあった

 かなり自信がありませんが・・・・勝手な推測です・・・
おそらくVBのバグだと思います。


弱ったなぁ〜 




 サンプルコード

Option Explicit

Public Sub test()
    Call 全フォルダ取得("C:\Users\Public\Documents")
End Sub

Public Sub 全フォルダ取得(ByVal argPath)
On Error GoTo ErrError
Dim f As Object
    
    With CreateObject("Scripting.FileSystemObject")
        For Each f In .GetFolder(argPath).SubFolders
            Call 全フォルダ取得(f.Path)
            Debug.Print f.Path
        Next f
    End With
    Exit Sub
    
ErrError:
    Resume Next
End Sub

追伸(2013-06-02)

  1. Err.Number 70 の時は、Resume Nxt とした。
  2. 出力する前に Dir() で、存在するフォルダーか否かを確認することにした。