在某些系统中,Excel VBA需要工作簿引用的文件扩展名
我有一个简单的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 虽然我想
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中),因此的更多详细信息对于),引用工作簿集合中的工作簿时必须包含文件扩展名”)。查看此链接了解更多详细信息谢谢,这真的很有帮助