Как проверить, существует ли сохраненный импорт с VBA - PullRequest
4 голосов
/ 06 марта 2012

Часть некоторого кода VBA, который я пишу, вызывает сохраненный импорт, используя:

DoCmd.RunSavedImportExport "import_name"

Это работает довольно хорошо для меня, за исключением случаев, когда сохраненный импорт не существует.В этом случае происходит сбой в автоматическом режиме.

Есть ли способ проверить, существует ли определение импорта, чтобы я мог вызвать ошибку или предпринять другие действия, если этого не происходит?

Яиспользуя Access 2010, но он должен работать и в 2003 году.

Ответы [ 2 ]

3 голосов
/ 06 марта 2012

Укажите и обработчик ошибок для решения этой проблемы (Access 2007 и выше):

Sub Importer()
On Error GoTo ErrImport

DoCmd.RunSavedImportExport "import_name"

ExitImporter:
  Exit Sub

ErrImport:
  MsgBox Error 'Err = 31602 for missing import specification
  Resume ExitImporter

End Sub

Более общее решение использует команду TransferText следующим образом:

Sub Importer()
    On Error GoTo ErrImport

DoCmd.TransferText acImportDelim, "Import_file Import Specification", "import_file", "import_file.txt", False

ExitImporter:
  Exit Sub

ErrImport:
    MsgBox "Error Number = " & Err & ", Message=" & Error ' Error 3011 indicates import_file.txt not found
    Resume ExitImporter

End Sub
0 голосов
/ 07 марта 2012

В Access 2003 они хранятся в скрытой системной таблице «MSysIMEXSpecs», не уверен, что это останется в более поздних версиях, но если это так, вы можете просмотреть его с помощью стандартного SQL:

SELECT * FROM MSysIMEXSpecs

Имя столбца "SpecName", так что это, вероятно, более уместно:

SELECT * FROM MSysIMEXSpecs WHERE SpecName = 'Your Spec Name'

Это позволит избежать перехвата ошибок

...