2016-03-03 38 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

相关问题