方法' VBE'对象' _Application'失败

时间:2015-12-07 21:35:29

标签: vba excel-vba vbe vbide excel

我的一位客户在下面运行Excel VBA代码时出现问题。他得到以下错误Method 'VBE' of object '_Application' failed,但只有一次,在他打开VBE后,它开始工作。此外,直到昨天它还在为他工作。

他正在使用Excel 2010。

这是抛出错误的代码。

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

2 个答案:

答案 0 :(得分:3)

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

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

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

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

答案 1 :(得分:0)

@ThunderFrame提到的Debug.Assert ...对我不起作用,但是信任中心选项可以:(取决于您的Excel版本):

Excel  ->  Menu  ->  File
->  Options
    ->  Trust Center
        ->  Macro Settings
            ->  Developer Macro Settings
                ->  [x] Trust access to the VBA project object model