在某些系统中,Excel VBA需要工作簿引用的文件扩展名

在某些系统中,Excel VBA需要工作簿引用的文件扩展名,vba,excel,Vba,Excel,我有一个简单的excel VBA,它在处理之前引用多个文件并将信息复制到主控文件。在我自己的系统上构建此系统时,工作簿参考(工作正常)编写为: Workbooks("key").Sheets("Sheet1").Range("A1:X57").Copy 这里的密钥是一个.xlsx文件 在另一个系统中使用此选项时,此选项不起作用,并且在每次调用中都明确要求文件扩展名 Workbooks("key.xlsx").Sheets("Sheet1").Range("A1:X57").Copy 虽然我想

我有一个简单的excel VBA,它在处理之前引用多个文件并将信息复制到主控文件。在我自己的系统上构建此系统时,工作簿参考(工作正常)编写为:

Workbooks("key").Sheets("Sheet1").Range("A1:X57").Copy
这里的密钥是一个.xlsx文件

在另一个系统中使用此选项时,此选项不起作用,并且在每次调用中都明确要求文件扩展名

Workbooks("key.xlsx").Sheets("Sheet1").Range("A1:X57").Copy
虽然我想了解为什么会发生这种情况,但对我来说做出这种改变并不十分困难,我可以定义一个不需要我这么做的选项(猜测!)吗?

为什么在运行同一脚本时,不同系统的行为会有所不同?


任何帮助都将不胜感激。对我来说,这似乎是VBA有自己的想法。

如果
键.xlsx
文件保存在两个系统上,包括引用工作簿时的文件扩展名,则由于Windows隐藏扩展名设置,对象是更安全的选择:


工作簿集合对象

如果“隐藏扩展名”设置无效(意味着 扩展确实显示在Windows中),您必须包括xls 引用工作簿集合中的工作簿时进行扩展。 例如,如果已打开名为Book1.xls的工作簿,则必须使用

工作簿(“Book1.xls”)。激活

而不是

工作簿(“Book1”)。激活

请参阅第1册工作簿。上面的第二行代码,没有 xls扩展将失败,出现错误9,下标超出范围, 因为没有名为Book1的工作簿。如果隐藏 扩展设置无效,您可以省略xls扩展并使用 下列任一行代码

工作簿(“Book1”)。激活

工作簿(“Book1.xls”)。激活

这些代码行假定您没有打开两个未保存的 名为Book1的工作簿和名为 Book1.xls。启用“隐藏扩展名”设置(以便 扩展隐藏在Windows中),上面的两行代码是 功能等效的。作为一种良好的编程实践,您可以 工作簿名称中应始终包含xls扩展名。这 确保引用正确的工作簿,而不考虑 “隐藏扩展名”属性的值




如果在两个系统上都保存了
key.xlsx
文件,包括引用工作簿对象时的文件扩展名,则由于Windows隐藏扩展名设置(“如果隐藏扩展名设置无效(意味着扩展名确实显示在Windows中),因此的更多详细信息对于),引用工作簿集合中的工作簿时必须包含文件扩展名”)。查看此链接了解更多详细信息谢谢,这真的很有帮助