gpt4 book ai didi

vba - 在 VBA 上声明和定义 FileSystemObject 对象的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-05 05:16:40 29 4
gpt4 key购买 nike

我在阅读有关如何声明 FileSystemObjects 对象的内容时发现了令人困惑的信息。是因为有不同的声明方式吗?

我向您展示了我发现的一些声明和定义 FileSystemOjbect 对象的方法:

  1. 将 FSO 调暗为 FileSystemObject
    设置 FSO = 新文件系统对象

  2. Dim FSO 作为新的 FileSystemObject

  3. 将 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://superuser.com/questions/615463/how-to-avoid-references-in-vba-early-binding-vs-late-binding/1262353?noredirect=1#comment1859095_1262353

另见

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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com