我正在阅读有关如何声明FileSystemObjects对象的文章,我发现了令人困惑的信息。是因为有不同的方式来声明它吗?
我告诉你我发现的一些声明和定义FileSystemOjbect对象的方法:
Dim FSO As FileSystemObject
Set FSO = New FileSystemObject
Dim FSO As New FileSystemObject
Dim FSO As Object
Set FSO = CreateObject("scripting.filesystemobject")
声明FileSystemObject对象的正确方法是什么?
答案 0 :(得分:1)
所有3种方法都是正确的。您有两种使用对象的不同方法。
中间方法是第一种方法的捷径,但并不完全。 新手VBA用户最好避免使用复杂的代码, 因为对对象变量的任何引用都会创建该对象的新实例, 如果对象变量= Nothing
早期绑定: 必须链接VBA中的已用库/模块-工具-参考, 在这段时间内 Microsoft脚本运行时库 如果目标计算机上不存在模块/代码,则执行将失败。 据报道,早期结合明显更快。 早期绑定在开发过程中为对象方法和属性以及命名常量提供了Intellisense-editor建议。
后期绑定: 无需链接使用的外部库/模块-更好的机器间可移植性。 据说后期装订较慢。 后期绑定不提供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