タイトル : パソコンの共有フォルダ取得 投稿日 : 2010/10/15(Fri) 17:17 投稿者 : にっちもさっちも
\\PCHのネットワークパソコンが共有しているフォルダを抽出するものですが。 \\PCHのネットワークパソコンが、ユーザー名、パスワードを入力しないと入れない場合に、 下のプログラムを起動すると For k = 1 To UBound(ans)にて オブジェクト変数またはWITHブロック変数が設定されていません。 と言うエラーが出ます。 On Error Resume Nextを入れるとこのエラーが出たり、出なかったりする感じがします。 どうすれば良いかを教えて下さい。 Public pc_fn(100) Sub abc() Dim k 'On Error GoTo 0 On Error Resume Next ans = pathfind("\\PCH", 0) '共有している最上位のフォルダのみ取得 For k = 1 To UBound(ans) If ans(k) = "" Then Exit For pc_fn(k) = ans(k) Debug.Print "test=", pc_fn(k) Next k MsgBox "end" End Sub 'マシン名を指定して共有フォルダを取得する。 Function pathfind(ByVal path As Variant, Optional ByVal lebel As Long = -1, Optional ByVal nest As Long = 0) Static pathnm() Static pidx As Long Static myshell As Object Dim fol As Object Dim fl As Object Dim g0 As Long On Error GoTo 0 'On Error Resume Next 'アクセス出来ないパソコンがいる。 If nest = 0 Then Erase pathnm() Set myshell = CreateObject("Shell.Application") pidx = 0 End If With myshell Set fol = .Namespace(path) For Each fl In fol.items If fl.IsFileSystem And fl.IsFolder Then ReDim Preserve pathnm(1 To pidx + 1) pathnm(pidx + 1) = fl.path pidx = pidx + 1 If lebel = -1 Or nest + 1 <= lebel Then pathfind fl.path, lebel, nest + 1 End If Next End With If nest = 0 Then Set myshell = Nothing pathfind = pathnm() Erase pathnm() pidx = 0 End If Set fol = Nothing Set fl = Nothing End Function |