2013-02-15 28 views
0

我必须更新一个旧的大型Access应用程序,其中包含不少宏。 我想确定一个宏是否被使用,以及它从哪里被调用。
我找不到解决方案。我安装了MZ Tools和CSD Tools,但这些似乎没有帮助。我也尝试使用内置的documentor将表单属性打印到PDF,但不包含控件属性和事件,因此也没有用。
有什么建议吗?Access宏调用的地方在哪里?

回答

2

考虑使用内置的依赖选项。这意味着您必须启用曲目名称自动更正。但是,FEW意识到您可以打开跟踪,但不必打开自动更正。

结果是给定对象的依赖关系的一个美丽的树视图。下面是一个屏幕截图:

enter image description here

注意,您可以向下钻取和“冲浪”应用这种方式。而且这两个对象都取决于所选择的对象,或者相反 - 所选对象依赖于哪个对象。

注意如何点击任何对象将在设计视图中打开它。我希望其他开发者系统具有的可重用功能。

请注意,如果您未打开自动正确跟踪功能,则第一次可能需要大量时间和处理,因为所有对象及其引用的反向都会发生。但是,一旦索引建立了这个惊人的功能,那么响应时间和这个功能的使用应该是即时的。

+0

感谢您的出色建议。我知道这个功能,但我没有考虑宏(我通常不使用宏)。另一方面,我看到一些非常严重的Access源阻止使用该功能,这就造成了错误。你对此有任何意见吗? – 2013-02-17 21:30:25

+0

这是什么使Autocorrect吓坏了我:http://allenbrowne.com/bug-03.html – 2013-02-18 13:44:35

1

感谢this link,我终于写我自己快速的工具,对于这个问题:

Sub listControlEvents() 
'by Patrick Honorez - www.idevlop.com --- 15-févr-2013 
'Purpose : list buttons calling macros + macro name 

    Dim f As AccessObject, frm As Form, c As Control 

    For Each f In CurrentProject.AllForms 
     Debug.Print f.NAME 
     DoCmd.OpenForm f.NAME, acDesign, , , , acHidden 
     Set frm = Forms(f.NAME) 
     For Each c In frm.Controls 
      If c.ControlType = acCommandButton Then 
       If c.Properties("OnCLick") <> "[Event Procedure]" Then 
        Debug.Print , c.NAME, 
        Debug.Print c.Properties("OnClick") 
       End If 
      End If 
     Next c 
     DoCmd.Close acForm, f.NAME, acSaveNo 
    Next f 
End Sub