excel - 将 FSO 设置为 FileSystemObject 与 Scripting.FileSystemObject
问题描述
我刚刚有一个时刻,你走出杂草并检查你的代码并问自己“我为什么这样做?”
我有一个脚本,它使用FileSystemObject
. 一切正常,但我想我一直在改变设置fso
变量的方式。
我的项目使用了Microsoft Scripting Runtime Library
引用,以便我可以使用早期绑定(即使我发现了几个 的实例Set fso = CreateObject("Scripting.FileSystemObject"
),这对于这个项目来说是愚蠢的)。也许是因为我的很多代码都来自在线示例,但我一直在以两种方式之一设置这些 fso 变量:
Set FSo = New FileSystemObject
Set FSo = New Scripting.FileSystemObject
这些有什么区别?我使用哪个重要,还是只在某些情况下使用?
解决方案
这些之间的区别在于后者消除了FileSystemObject
属于Scripting
而不属于其他事物的歧义。
如果您在该工作簿中命名了自己的类FileSystemObject
,则需要后者指定您正在创建Scripting.FileSystemObject
而不是Yourworkbook.FileSystemObject
.
同样,如果您引用了其他具有名为 的类的外部库FileSystemObject
,它也会解决这种歧义。这就是为什么“添加引用”对话框中有向上/向下箭头的原因 - 它们决定在名称冲突且没有来自编码器的明确消歧的情况下哪个库获胜。
VBA 中需要消歧的一个常见情况是同时使用 Word 和 Excel 对象模型。两者都有一个名为 的类Range
,您通常需要指定是要Word.Range
还是Excel.Range
这次。
如果您没有任何此类冲突的名称,那对您来说没有任何区别,除了可能让未来的读者更容易回忆起那FileSystemObject
是Scripting
.
推荐阅读
- python - 在 Django GitLab 存储库中运行 HtmlTestRunner Selenium UnitTests
- flutter - List() 不推荐用于循环
- email - 如何启用基于凭据的身份验证,但仍允许 exim.conf 中的一些未经身份验证的客户端?
- shell - 服务启动时无法执行shell命令,但重启服务正常
- git - Go mod 用私有分支替换依赖
- mongodb - 如何从文档中的对象数组中仅获取一个与搜索条件匹配的对象?
- c# - WPF - MVVM:如何用鼠标绘制可移动的矩形
- ios - 在 Iphone 上禁用 Progressive Web App 上的后退按钮
- netbeans - 来自数据库的实体类不映射来自不同模式的实体
- recursion - 等差数列数