簡體   English   中英

對象“_Application”的方法“VBE”失敗

[英]Method 'VBE' of object '_Application' failed

我的一位客戶在運行下面的 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

您需要通過導航到 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 更改工作表代號運行時錯誤 9:下標超出范圍

Debug.Assert ...被提到@ThunderFrame沒有為我工作,但信任中心選項所做的:(根據您的Excel版本類似):

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

解決此類依賴於VBComponent 的代碼問題的一般方法是使用此處給出VbeInit過程,該過程可以靈活地為每個新打開的可能尚未“初始化VBComponent ”的工作簿多次調用。

解決此類與VBComponent相關的代碼問題的通用方法是,使用此處提供VbeInit過程 ,該過程可以靈活地為尚未被“ VBComponent初始化”的每個新打開的工作簿多次調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM