2016-03-03 276 views
1

我正在嘗試在VBA中的IP地址的共享文件夾名稱列表中找到一個字符串。 下面的例程適用於文件夾,但不起作用。它說的錯誤是Err-76,找不到路徑。 任何人都可以告訴我如何訪問IP地址中的共享文件夾名稱。在VBA的IP地址中找到共享文件夾

Sub findfolder() 
Dim myFolder As Folder 
Dim objfile As Object 
Dim subfolder As Object 
Dim FSO As New FileSystemObject 
Dim txt As String 
Dim strname As String 

txt = "\\10.4.32.33" 
'spath = GetFolder(txt) 
strname = InputBox(Prompt:="You Search String please.", _ 
     Title:="ENTER SEARCH STRING", Default:="Your Search String here") 

Set myFolder = FSO.GetFolder(txt) 
For Each subfolder In myFolder.SubFolders 
    cnt = 0 
    If (InStr(LCase(subfolder.Name), strname)) Then MsgBox ("found string" & subfolder.Name) 
Next 
End Sub 
+0

糾正我,如果我錯了,應該是'txt =「//10.4.32.33/」' – 0m3r

+0

感謝您的評論。但它說文件夾名稱無效。實際上,如果我通過getfolder命令進入一個共享文件夾,那麼我需要做的更多的改變是:set myfolder = FSO.getfolder(spath)。但是當我滾動到IP地址中的共享文件夾列表時,這同樣不起作用。 – Sarnath

+1

有一個概念上的問題,你嘗試'GetFolder(「\\ 10.4.32.33」)',但'\\ 10.4.32.33'不是一個驅動器或文件夾。你不能在FSO上做到這一點。在其他語言中,您可以使用'NetShareEnum()'API,但不能從VBScript調用它。其他選項可能是使用WMI來查看遠程機器,或者捕獲和分析「net view \\ 10.4.32.33」的輸出。 –

回答

0

使用Shell.Application的ActiveX而不是FSO,這裏有一個例子:

Sub ShowSharedFolders() 

    Const SHCONTF_CHECKING_FOR_CHILDREN = &H10 
    Const SHCONTF_FOLDERS = &H20 
    Const SHCONTF_NONFOLDERS = &H40 
    Const SHCONTF_INCLUDEHIDDEN = &H80 
    Const SHCONTF_INIT_ON_FIRST_NEXT = &H100 
    Const SHCONTF_NETPRINTERSRCH = &H200 
    Const SHCONTF_SHAREABLE = &H400 
    Const SHCONTF_STORAGE = &H800 
    Const SHCONTF_NAVIGATION_ENUM = &H1000 
    Const SHCONTF_FASTITEMS = &H2000 
    Const SHCONTF_FLATLIST = &H4000 
    Const SHCONTF_ENABLE_ASYNC = &H8000 
    Const SHCONTF_INCLUDESUPERHIDDEN = &H10000 

    strPath = "\\10.4.32.33\" 

    Set objShellApp = CreateObject("Shell.Application") 
    Set objFolder = objShellApp.Namespace(strPath) 
    Set objFolderItems = objFolder.Items() 
    objFolderItems.Filter SHCONTF_FOLDERS + SHCONTF_INCLUDEHIDDEN, "*.*" 

    For Each objFolderItem In objFolderItems 
     Debug.Print objFolderItem.Name & vbTab & objFolderItem.Path 
    Next 

End Sub 

對於早期綁定Set objShellApp = New Shell必須添加引用微軟殼牌控制和自動化(SHELL32)。

+0

OOH謝謝你,非常感謝你,這就是我想要的。 – Sarnath