Access テーブルにデータ マクロが含まれているかどうかを VBA で判断する方法はありますか? ほとんどのテーブルにデータ マクロがありますが、データ マクロがないテーブルに遭遇するとコードが失敗します。
エラー メッセージが表示されません。代わりに、コードは無限ループにあるかのように実行され続けますが、Access を強制的に終了してエスケープする必要があります。
具体的には、(文書化されていない) LoadFromText 関数を使用して後でそれらを再作成できるように、すべてのテーブルとデータ マクロを保存しようとしています。
以下のサンプル コードでは、問題を ** BUG ** で強調しています。
For Each td In db.TableDefs
If Left(td.Name, 4) <> "MSys" Then
'Save the table as a text file.
DoCmd.TransferText acExportDelim, , td.Name, sExportLocation & "Table_" & td.Name & ".txt", True
'Save the table's data macro as an XML file.
'** BUG **: If a table doesn't have a data macro, Access freezes/starts infinite loop.
Application.SaveAsText acTableDataMacro, td.Name, sExportLocation & "Table_" & td.Name & "_DataMacro.xml"
End If
Next td
データ マクロがテーブルに存在するかどうかを最初に確認する、ある種のネストされた If ステートメントが必要であると仮定します。といっても、どう書いていいのかわかりません。
別の SO 投稿 でSaveAsText および LoadFromText 関数を指摘してくれた人々に感謝します。これらの機能には多くの可能性があるようです。