Vba 工作簿名称中何时需要扩展名?

Vba 工作簿名称中何时需要扩展名?,vba,excel,Vba,Excel,我有一个excel文件目录,这些文件通过主文件中的VBA代码相互交互 我以前从来没有遇到过这样的问题,但是在复制整个目录以对副本进行一些开发工作(将原始文件保存在其他位置)之后,我在引用工作簿时遇到了“下标超出范围”的问题 例如,以前使用这行代码时一切都正常(实际代码中没有任何内容被更改): 现在抛出错误的代码(以前从未出现过): ScheduleLocation = Workbooks("Master Schedule").Path ScheduleLocation = Workbooks(

我有一个excel文件目录,这些文件通过主文件中的VBA代码相互交互

我以前从来没有遇到过这样的问题,但是在复制整个目录以对副本进行一些开发工作(将原始文件保存在其他位置)之后,我在引用工作簿时遇到了“下标超出范围”的问题

例如,以前使用这行代码时一切都正常(实际代码中没有任何内容被更改):

现在抛出错误的代码(以前从未出现过):

ScheduleLocation = Workbooks("Master Schedule").Path
ScheduleLocation = Workbooks("Master Schedule.xlsm").Path
但是,这一行现在抛出一个错误。如果我用“Master Schedule.xlsm”替换“Master Schedule”,一切都会恢复正常。我以前也有过这个问题,但我一直无法找出问题的根源

不引发错误的代码:

ScheduleLocation = Workbooks("Master Schedule").Path
ScheduleLocation = Workbooks("Master Schedule.xlsm").Path
因此我的问题是:为什么会这样?为什么名称(无扩展名)有时不够,有时不够?

您是否在windows资源管理器中启用了“显示已知文件类型的文件扩展名”? 尝试使用隐藏的和可见的扩展名运行代码

最好在打开时将工作簿分配给变量

Dim wbInput as Workbook
Set wbInput = Workbooks.open ("C:\Master Schedule.xslx")

现在,您可以处理变量,而不必关心扩展的系统设置。

根本没有真正解释这一点,实际上使用了有扩展和没有扩展的示例;唯一的区别是,没有示例的示例已经打开。是否有可能命名歧义(主调度?XLSM和主调度?XLA可能)?@ TimWalm有趣。我碰巧在同一个链接上。什么可能导致Windows中的此设置发生更改?我只是简单地将整个目录复制到另一个位置来做一些开发工作,它开始抛出错误!不能说-我从来没有看到它自己改变过…一个.XLSM文件扩展名表示启用了Excel Open XML宏的电子表格,所以可能是出于安全原因(如果您的工作簿包含VBA宏)。致以最诚挚的问候,令人难以置信,但此Windows设置会影响Excel API行为!始终使用扩展,无论此设置如何,它都会工作。