我正在运行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
大约需要15秒。目录本身只有5个文件。 值得一提的是,直接从资源管理器访问目录的速度要快得多(不到1秒)。
答案 0 :(得分: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