Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 从MS office-Excel VBA访问smb文件和目录的速度较慢_Windows_Excel_Smb_Excel 2013_Vba - Fatal编程技术网

Windows 从MS office-Excel VBA访问smb文件和目录的速度较慢

Windows 从MS office-Excel VBA访问smb文件和目录的速度较慢,windows,excel,smb,excel-2013,vba,Windows,Excel,Smb,Excel 2013,Vba,我正在运行MS Office 2013,并尝试从Excel VBA代码中列出smb目录中的文件 unix_path = "\\smb" & unix_path ListBox3.Clear Dim fil As file On Error Resume Next If Dir(unix_path, vbDirectory) <> "" Then Set MyObject = New Scripting.FileSystemObject Set mysource

我正在运行MS Office 2013,并尝试从Excel VBA代码中列出smb目录中的文件

unix_path = "\\smb" & unix_path

 ListBox3.Clear
 Dim fil As file
 On Error Resume Next
 If Dir(unix_path, vbDirectory) <> "" Then

 Set MyObject = New Scripting.FileSystemObject
 Set mysource = MyObject.GetFolder(unix_path)
 For Each myFile In mysource.Files
 If InStr(myFile.Name, ".xlsx") > 0 Then
    UserForm1.ListBox3.AddItem myFile.Name
End If
unix\u路径=“\\smb”&unix\u路径
列表框3。清除
将文件作为文件
出错时继续下一步
如果Dir(unix_路径,vbDirectory)“,则
设置MyObject=New Scripting.FileSystemObject
设置mysource=MyObject.GetFolder(unix_路径)
对于mysource.Files中的每个myFile
如果InStr(myFile.Name,“.xlsx”)>0,则
UserForm1.ListBox3.AddItem myFile.Name
如果结束
这大约需要15秒。目录本身只有5个文件。
值得一提的是,直接从资源管理器访问目录的速度要快得多(不到1秒)。

根据我的经验,FSO有很多开销,我在网络上遇到了一些奇怪的问题。我不经常使用它,除非我正在做比这种情况更具体的事情

请测试下面的代码,看看它是否仍然挂起

unix_path = "\\smb" & unix_path

 ListBox3.Clear
 Dim fil As file
 On Error Resume Next
 If Dir(unix_path, vbDirectory) <> "" Then

 mySource = Dir(unix_path & "*.xlsx")
 Do until mySource = ""
    UserForm1.ListBox3.AddItem mySource
    mySource = Dir()
 loop
 end if
unix\u路径=“\\smb”&unix\u路径
列表框3。清除
将文件作为文件
出错时继续下一步
如果Dir(unix_路径,vbDirectory)“,则
mySource=Dir(unix_路径和“*.xlsx”)
直到mySource=“”为止
UserForm1.ListBox3.AddItem mySource
mySource=Dir()
环
如果结束

当您尝试单步执行代码时,它是否挂起Dir调用?还是一套?真是不一样。谢谢