如何使用VBA识别ThisWorkbook模块

4 excel vba excel-vba

使用Excel 2010.

我需要将代码添加到已重命名ThisWorkbook模块的远程Excel文件中,让我们说"DashboardWorkbook".我不知道新名称,可以是任何东西,但我需要以编程方式识别此模块,以便向Sub Workbook_Open()添加更多代码.

我打开这个远程文件,然后我浏览它的所有组件:

Private Sub AddProcedureToWorkbook(wb As Workbook)
  Dim VBProj As VBIDE.VBProject
  Dim oComp As VBIDE.VBComponent
  Dim oCodeMod As VBIDE.CodeModule

  Set VBProj = wb.VBProject 
  For Each oComp In VBProj.VBComponents
    If *[check here if oComp was formerly ThisWorkbook but now renamed]* Then
      Set oCodeMod = oComp.CodeModule
        'add new code here
      ...etc, etc
    End If
  Next

End Sub
Run Code Online (Sandbox Code Playgroud)

在Excel界面中,ThisWorkbook有一个不同的图标,所以它似乎是一个不同的模块类型,但我无法弄清楚要识别的具体属性是什么?

为了使事情复杂化,有时Sub Workbook_Open()不存在,因此我需要在正确的位置添加它...

谢谢,

先生

GSe*_*erg 5

可以通过代码直接从代码访问表格和书籍CodeName(不同于显示名称Name).
这也是他们的VBComponent名称.

Private Sub AddProcedureToWorkbook(wb As Workbook)
  Dim VBProj As VBIDE.VBProject
  Dim oComp As VBIDE.VBComponent
  Dim oCodeMod As VBIDE.CodeModule

  Set VBProj = wb.VBProject
  Set oComp = VBProj.VBComponents(wb.CodeName)
  Set oCodeMod = oComp.CodeModule

  oCodeMod.AddFromString "sub Hi()" & vbNewLine & "msgbox ""Hi.""" & vbNewLine & "end sub"
End Sub
Run Code Online (Sandbox Code Playgroud)