首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对象“_Application”的“VBE”方法失败

对象“_Application”的“VBE”方法失败
EN

Stack Overflow用户
提问于 2015-12-07 21:35:28
回答 2查看 7.4K关注 0票数 4

我的一个客户端在运行下面的Excel代码时出了问题。他得到了下面的错误Method 'VBE' of object '_Application' failed,但是只有一次,在他打开VBE之后,它就开始工作了。而且,直到昨天还在为他工作。

他正在使用Excel 2010。

这是抛出错误的代码。

代码语言:javascript
复制
For Each f In Application.VBE.ActiveVBProject.VBComponents
    If InStr(1, f.Name, "UserForm") = 1 Then
        Application.VBE.ActiveVBProject.VBComponents.Remove (f)
    End If
Next f
EN

回答 2

Stack Overflow用户

发布于 2016-12-22 22:20:23

您需要通过导航到Excel选项中的信任中心来确保对VBE的访问是可信的。

在vbComponents上的某些操作要求VBE至少打开一次,或者至少要求VBA在尝试枚举VBComponents之前引用vbComponents。

看起来,您的客户端代码可能在auto_open过程或Workbook_Open事件中运行。如果在枚举vbComponents之前显式地添加了引用VBE的行,您可能会发现代码再次开始工作。

代码语言:javascript
复制
Debug.Assert Application.VBE.ActiveVBProject.Name <> vbNullString

For Each f In Application.VBE.ActiveVBProject.VBComponents
    If InStr(1, f.Name, "UserForm") = 1 Then
        Application.VBE.ActiveVBProject.VBComponents.Remove (f)
    End If
Next f

请参阅关于这个问题的答案:VBA changing sheet codename Run-Time Error 9: Subscript out of range

票数 3
EN

Stack Overflow用户

发布于 2019-01-22 10:20:39

@ThunderFrame提到的@ThunderFrame不适合我,但是信任中心选项做到了:(取决于您的Excel版本,类似于):

代码语言:javascript
复制
Excel  ->  Menu  ->  File
->  Options
    ->  Trust Center
        ->  Macro Settings
            ->  Developer Macro Settings
                ->  [x] Trust access to the VBA project object model

解决这种依赖于VBComponent的代码问题的一般方法是使用灵活的procedure given here,对每个新打开的工作簿进行多次调用,而这些工作簿可能还不是"VBComponent-initialized“。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34143670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档