tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル パソコンの共有フォルダ取得
投稿日: 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

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。