excel - 无法在 Excel VBA 中迭代函数返回的对象
问题描述
我想在 Excel VBA 中迭代对象。但它显示错误“运行时错误 438。对象不支持此属性或方法”。
Sub FunctionTest()
Dim src, dist, production As Workbook
Dim files As Object
Set dist = ThisWorkbook
Set files = getFiles(dist.path)
For Each file In files
Debug.Print file.Name
Next
End Sub
Function getFiles(path As String) As Object
Dim fsObject, folderObj, FileObj As Object
Set fsObject = CreateObject("Scripting.FileSystemObject")
Set folderObj = fsObject.GetFolder(path)
Set filesObj = folderObj.files
Set getFiles = fsObject
End Function
但如果它不是这样返回的对象,它会很好地工作。
Function getFiles(path As String) As Object
Dim fsObject, folderObj, FileObj As Object
Set fsObject = CreateObject("Scripting.FileSystemObject")
Set folderObj = fsObject.GetFolder(path)
Set filesObj = folderObj.files
For Each file In filesObj
Debug.Print file.Name
Next
Set getFiles = fsObject
End Function
解决方案
您的代码返回了错误的对象。它应该是:
Set getFiles = filesObj
推荐阅读
- sql - 第一个表的 DB2 SQL COUNT() 结果
- java - 如何使用 Android Java 将条形码打印到斑马 ez320?
- python - 使用内部有字典的 pandas 列在 DataFrame 中创建新列
- python - 使用 Python 和 Beautiful Soup 从文本中抓取数字
- python - BeautifulSoup 在有效结果中返回 None
- facebook - facebook 和 google 分析中的 URL Builder 源/媒体问题
- http - net.Dialer#KeepAlive 和 http.Transport#IdleTimeout 有什么区别?
- java - macos镜像中appVeyor中AdoptOpenJDK 8.232的安装路径是什么?
- webpack - 未定义导出 - Storybook + webpack 3 + babel 7 + commonjs
- python - Python ctypes 使用 winmode 加载 DLL