モジュールとフォームにVBA行数を追加することにより、ドキュメントデータベースに対して作成したレポートを改善しようとしています。次のコードは、標準モジュールで完全に機能します。
Sub test()
Dim accObj As AccessObject, bwasOpen As Boolean, objName As String
objName = "Form1"
Set accObj = CurrentProject.AllForms(objName)
bwasOpen = accObj.IsLoaded
If Not bwasOpen Then
DoCmd.OpenForm objName, acDesign, WindowMode:=acHidden
End If
If Forms(objName).HasModule Then
DoCmd.OpenModule "Form_" & objName
Debug.Print Modules("Form_" & objName).CountOfLines
End If
If Not bwasOpen Then
DoCmd.Close acForm, objName, acSaveNo
End If
End Sub
しかし、レポート自体で同様のコードを使用すると、エラーが発生します。そして、そのエラーはクラスモジュール(レポート)で発生しているので、デバッグに少し行き詰まっているように感じます。レポートのコード:
Set accObj = CurrentProject.AllForms(objName)
bwasOpen = accObj.IsLoaded
If Not bwasOpen Then
DoCmd.OpenForm objName, acDesign, WindowMode:=acHidden 'Breaks here
End If
If Forms(objName).HasModule Then
DoCmd.OpenModule "Form_" & objName
GetExtraInfo = Modules("Form_" & objName).CountOfLines
End If
If Not bwasOpen Then
DoCmd.Close acForm, objName, acSaveNo
End If
コードは、= GetExtraInfo()を使用してレポートコントロールから呼び出されます。フォームのCountOfLinesを返したいこの新しい部分を除いて、すべてがうまく機能します。
更新:エラートラップを追加しましたが、エラーが発生します:
2486-現在、このアクションを実行できません
db全体をここからダウンロードできます。たった300KBです。レポートの名前は「rptObjList」です。「悪い」コードはコメントアウトされています。これはAccess2003データベースです。
ご協力いただきありがとうございます。