Windows 从MS office-Excel VBA访问smb文件和目录的速度较慢
我正在运行MS Office 2013,并尝试从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
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调用?还是一套?真是不一样。谢谢