从另一个工作簿调用宏会导致宏被跳过

时间:2017-07-31 09:17:34

标签: excel vba excel-vba

我尝试从工作簿中执行以下操作(说A.xlsm):

  1. 打开另一个工作簿(比如B.xlsb
  2. B.xlsb
  3. 调用A.xlsm中的宏
  4. 保存工作簿B.xlsb
  5. 关闭工作簿B.xlsb
  6. 以下是A.xlsm中的代码:

    Workbooks.Open(Filename:=B.xlsb).RunAutoMacros Which:=xlAutoOpen
    Workbooks(B.xlsb).Activate
    Windows(B.xlsb).Activate
    Application.Run (B.xlsb& "!MyMacro")
    

    最重要的是,但是在Initialize中会跳过用于初始化功能区对象的宏(B.xlsm),这应该在加载工作簿时调用{{1} }}。当我手动打开它然后保存并关闭。

    我看到宏B.xlsbWorkbook_OpenWorkbook_Activate(这是在加载时调用的XML中配置)按顺序调用。
    但是当我从VBA进行调用时,InitializeWorkbook_Open被调用,但Workbook_Activate被跳过。

    Image showing Initialize macro in B.xlsb

1 个答案:

答案 0 :(得分:1)

工作簿功能没有功能Initialize。请参阅Workbook object