我在阅读有关如何声明 FileSystemObjects 对象的内容时发现了令人困惑的信息。是因为有不同的声明方式吗?
我向您展示了我发现的一些声明和定义 FileSystemOjbect 对象的方法:
将 FSO 调暗为 FileSystemObject 设置 FSO = 新文件系统对象
Dim FSO 作为新的 FileSystemObject
将 FSO 调暗为对象 Set FSO = CreateObject("scripting.filesystemobject")
声明 FileSystemObject 对象的正确方法是什么?
最佳答案
所有3种方式都是正确的。您找到了 2 种不同的对象使用方法。
- 前两种方式表示“早期绑定(bind)”。
- 最后一种方式表示“后期绑定(bind)”。
中道是通往第一种方式的捷径,但并不完全。 新手 VBA 用户最好避免使用复杂代码, 因为对对象变量的任何引用都会创建对象的新实例, 如果对象变量=Nothing
早期绑定(bind): 必须在 VBA - Tools - References 中链接使用过的库/模块, 在这个时候 Microsoft Scripting Runtime 库 如果目标计算机上不存在模块/代码,则执行将失败。 据报道,早期绑定(bind)要快得多。 早期绑定(bind)在开发时提供对象方法和属性以及命名常量的 Intellisense 编辑器建议
后期绑定(bind): 无需链接使用的外部库/模块 - 更好的机器间可移植性。 据报道,后期绑定(bind)速度较慢。 后期绑定(bind)不提供 Intellisense,对象特定常量必须显式声明或由其值提供。
参见例如条件代码编译,基于项目范围的条件编译参数 Earlybinding :
Sub EarlyVsLateBindingtest()
#If Earlybinding Then
Dim oFS As Scripting.FileSystemObject
Set oFS = New Scripting.FileSystemObject
#Else
Const TemporaryFolder = 2
Dim oFS As Object
Set oFS = CreateObject("Scripting.FileSystemObject")
#End If
oFS.GetSpecialFolder (TemporaryFolder)
End Sub
另见
https://wordmvp.com/FAQs/InterDev/EarlyvsLateBinding.htm
https://support.microsoft.com/en-gb/help/245115/using-early-binding-and-late-binding-in-automation
关于vba - 在 VBA 上声明和定义 FileSystemObject 对象的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50061264/