首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将FSO设置为FileSystemObject与Scripting.FileSystemObject

将FSO设置为FileSystemObject与Scripting.FileSystemObject
EN

Stack Overflow用户
提问于 2021-10-11 13:31:17
回答 1查看 93关注 0票数 2

我只是遇到过这样的时刻:你从杂草中走出来,检查你的代码,然后问自己“我为什么要这样做?”

我有一个使用FileSystemObject创建包含多个子文件夹和文件的文件夹的脚本。一切都正常,但我猜我一直在改变设置fso变量的方式。

我的项目使用Microsoft Scripting Runtime Library引用,这样我就可以使用早期绑定(即使我找到了Set fso = CreateObject("Scripting.FileSystemObject"的几个实例),这对于这个项目来说是愚蠢的)。也许是因为我基于在线示例中的大量代码,但我一直在使用以下两种方法之一来设置这些fso变量:

代码语言:javascript
复制
Set FSo = New FileSystemObject

Set FSo = New Scripting.FileSystemObject

它们之间的区别是什么?我使用哪一个很重要,还是只在某些情况下使用?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-11 13:37:37

它们之间的不同之处在于,后者消除了FileSystemObject属于Scripting而不是其他东西的歧义。

如果您在该工作簿中有自己的名为FileSystemObject的类,则需要后者来指定您创建的是Scripting.FileSystemObject而不是Yourworkbook.FileSystemObject

类似地,如果您有一个对其他外部库的引用,该外部库也具有一个名为FileSystemObject的类,那么它也可以解决这种歧义。这就是为什么在添加引用对话框中有向上/向下箭头的原因-它们决定在名称冲突且编码器没有显式消除歧义的情况下哪个库获胜。

在VBA中,需要消除歧义的常见情况是同时使用Word和Excel对象模型。两者都有一个名为Range的类,您经常需要指定这次是使用Word.Range还是Excel.Range

如果你没有任何这样冲突的名字,这对你来说没有什么不同,除了可能会让未来的读者更容易回忆起FileSystemObject是来自Scripting的东西。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69527054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档