2017-10-20 123 views
1

问题如何从VBA打印模块描述?

处理Access 2010数据库的文档例程。在数据库内有许多模块&类。我可以轻松地打印这些名称以及Get/Set属性,但尚未找到通过VBE的模块属性面板检索描述输入的方法。

背景

使用Application.VBE.VBProjects收集我可以用

'iterate through modules 
For Each vbComp In vbProj.VBComponents 
    Set vbMod = vbComp.CodeModule 

    'fetch description 
    Select Case TypeName(vbMod) 
     Case "CodeModule" 'module 
      'description = CurrentDb.Containers("Modules").Documents(vbMod).Properties("Description") 
     Case Else 
      description = "" 
    End Select 

    Debug.Print vbComp.Name 
    Debug.Print description 
Next 

CurrentDb.Containers("Modules").Documents(vbMod).Properties("Description")线路错误出在模块&类的名称得到。这是刺探描述属性,但没有骰子。

通过检查Daniel Pineault's例程得知了这一点,但没有搜索显示如何获取模块/类描述。您可以在项目描述&表格描述中找到,但没有模块/类别描述。检索它们将显着缩短文档记录时间。

问题

如何获取这些描述的任何想法?

+0

'line error out'并没有描述你所得到的错误...给我们一些东西在这里工作 – jsotola

回答

3

你几乎在那里。 Documents集合需要一个名称(或索引),而不是一个对象。使用VBComp.NamevbMod.Name

'fetch description 
Select Case TypeName(vbMod) 
    Case "CodeModule" 'module 
     ' Handle modules without Description property 
     On Error Resume Next 
     Description = CurrentDb.Containers("Modules").Documents(VBComp.Name).Properties("Description") 
     If Err.Number <> 0 Then Description = "" 
     On Error GoTo 0 

编辑:
其实,错误处理是比较重要的部分。

  • 没有描述的标准模块没有空的“描述”属性,它们根本没有属性。
  • 表单/报表模块也将显示在此Case中,但它们不包含在Containers("Modules")中。这些模块没有单独的说明。如果您想要打印表单/报表说明,则必须添加另一个案例区分。
+0

谢谢。优秀。使用Nz进行一次调整以处理丢失的描述'description = Nz(CurrentDb.Containers(“Modules”)。Documents(vbComp.Name).Properties(“Description”),“”)' – NWdev