【问题标题】:VBA Workbooks.open "Compile error: Argument not optional"VBA Workbooks.open “编译错误:参数不是可选的”
【发布时间】:2013-02-08 11:49:48
【问题描述】:

我正在尝试使用

Workbooks.Open Filename:= [...]

for each 循环中使用对 Microsoft 脚本例程的引用访问某些数据的方法。我已经在其他几个宏中成功地做到了这一点,但由于某种原因,在这个文件中的所有模块中(我已经尝试重新启动机器等),我收到消息“编译错误:参数不是可选”的代码那条线。其他工作簿不会在那里抛出错误。

我对该问题的研究并没有针对这种特殊情况产生任何量身定制的东西 - 我认为也许我需要在某处使用 Set 来强制 VBE 识别该对象?希望更有经验的用户能够识别可能发生这种情况的一些经典情况。我现在唯一的线索是 VBE 似乎没有将“工作簿”识别为关键字,因为它的第一个字母没有大写。

任何帮助将不胜感激。

C

【问题讨论】:

  • 显然您在该工作簿中还有其他名为 Workbooks 的内容?一个变量,一个自定义类?
  • GSerg,感谢您的回复。我已经将另一个函数导入到其他人构建的模块中,目的是修改代码元素以适应我的。里面是一个名为...的潜艇,你猜对了(“工作簿”)。感谢您的帮助,希望我提出的下一个问题会是一个更有趣的问题。
  • 我看不到页面上标记为已解决的位置?会回来看看
  • 您不能接受它,因为我没有将它作为 aswer 发布。我现在会:)
  • 以后,单击Workbooks 变量并键入Shift-F2,或右键单击Workbooks 变量并选择Definition。这将向您展示抱怨非可选参数的事情。

标签: vba excel


【解决方案1】:

显然工作簿中还有其他内容称为Workbooks(变量、类、函数),并且因为它具有更多的本地范围,所以在实际的Workbooks 对象之前找到它。

您可以重命名有问题的对象或以更合格的方式访问Workbooks

Application.Workbooks.Open Filename:= [...]

【讨论】:

  • P.S.很抱歉用我的快速编辑来夸大你对另一个问题的回答。伟大的思想和所有的想法都是一样的。令人惊讶的是查询的相似程度。
  • @ErikE NP,实际上我也更欣赏这种相似性而不是潜在的代表
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多