2013-02-15 25 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