Есть ли способ определить через VBA, если таблица Access содержит макрос данных или нет? У меня есть макросы данных на самых моих таблиц, но мой код не работает, если он встречает таблицу без нее.Могу ли я использовать 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, который сначала проверяет, существует ли макрос данных в таблице. Я не уверен, как это написать.
Благодаря людям, указавшим на функции SaveAsText и LoadFromText in another SO post. Кажется, что эти функции имеют большой потенциал.
Если я выполнил SaveAsText() в таблице без DataMacros, я получаю ошибку времени выполнения «2950», «Зарезервированная ошибка». По-видимому, фрагмент кода не является полным, поскольку он не имеет всех объявлений переменных и т. Д. Возможно, ваша обработка ошибок настроена неправильно/оптимально. Я предлагаю добавить явную «On Error Goto 0» и запустить код из одной подпроцедуры, выполненной из окна Immediate. –
Стоит отметить, что я запускаю Access с MS Office Pro Plus 2013 с VBA 7.1 и MS Office Pro 2016. –