【问题标题】:Method 'Names' of object '_Application' failed对象“_Application”的方法“名称”失败
【发布时间】:2018-06-15 01:53:00
【问题描述】:

我在将带有 VBA 的 Excel 2010 电子表格部署到客户端时遇到问题。他们报告以下错误:“运行时错误'1004':对象'_Application'的方法'Names'失败”。

截图

失败的相关代码部分如下:

Dim settings as Range
Set settings = Application.Names("basictags").RefersToRange

“basictags”这个名字肯定存在于电子表格中(而且它在我端工作得很好),所以我认为它与在客户端启用保护模式有关。但是,他们已经确认,当 Excel 显示保护模式警告时,他们点击了“启用”按钮,所以我不确定还有什么可能导致它。

【问题讨论】:

  • 它会报告“_Application”真的很奇怪。下划线表示您没有限定引用,就像您使用没有应用程序限定符的Names("basictags") 并且它必须使用名称的默认父级。但默认父级是工作簿,而不是应用程序。名称问题通常与范围相关,但我可以重现这个问题。
  • 似乎这个 Excel 实例不喜欢全局命名空间......按照 dotNet 的建议使用 ThisWorkbook 进行限定修复了原始错误,但现在使用 Sheets() 调用,客户端报告“对象 '_Global' 的方法 'Sheets' 失败”

标签: excel vba


【解决方案1】:

试试Application.ThisWorkbook.Names 而不是Application.Names

【讨论】:

  • 谢谢,解决了错误,但您能解释一下原因吗?我的客户现在尝试使用 Sheets() 函数时报告了类似的错误。
  • Names 对应于工作簿的命名范围,该功能也可直接在 Excel 中使用(您可以选择一个范围,为其定义名称并然后稍后在公式中使用该名称而不是范围地址)。所以你可以想象在对象模型中,这个属性在逻辑上应该是Workbook对象而不是Application对象的一部分。
  • @user2312119:当一个答案对你有用时,接受它不仅有助于回答的伙伴,也有助于未来的访客。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多