首页 > 解决方案 > 将 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

这些有什么区别?我使用哪个重要,还是只在某些情况下使用?

标签: excelvbafilesystemobjectreference-library

解决方案


这些之间的区别在于后者消除了FileSystemObject属于Scripting而不属于其他事物的歧义。

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

同样,如果您引用了其他具有名为 的类的外部库FileSystemObject,它也会解决这种歧义。这就是为什么“添加引用”对话框中有向上/向下箭头的原因 - 它们决定在名称冲突且没有来自编码器的明确消歧的情况下哪个库获胜。

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

如果您没有任何此类冲突的名称,那对您来说没有任何区别,除了可能让未来的读者更容易回忆起那FileSystemObjectScripting.


推荐阅读