VBA中FileSystemObject的CreateTextFile方法Overwrite参数疑问
关于CreateTextFile方法Overwrite参数的行为解释
这属于实际的预期行为,但微软早期官方文档的描述存在歧义,才导致了你的误解。
- 实际行为:当
CreateTextFile的Overwrite参数设为False时,如果目标文件已存在,会直接触发文件已存在的错误,而非静默跳过创建。 - 参数设计逻辑:这个参数的核心作用是控制“是否允许覆盖已存在的文件”:
- 设为
True(默认值):不管文件是否存在,都会创建新文件(存在则覆盖) - 设为
False:仅在文件不存在时创建新文件,若文件已存在则抛出错误,以此避免误覆盖重要文件
- 设为
- 你提到的“跳过创建不报错”的场景,并不是这个参数的设计目标。如果需要实现这种逻辑,确实需要先通过
FSO.FileExists(SomeFilePath)检查文件是否存在,再决定是否调用CreateTextFile。
微软后续的官方文档已经修正了描述,明确说明Overwrite=False时文件已存在会触发错误,早期文档的模糊表述才造成了认知偏差。
内容的提问来源于stack exchange,提问作者Albin
相关产品推荐
相关产品推荐

