Закрыть модальную форму в Access и получить доступ к коду модуля - PullRequest
1 голос
/ 06 января 2010

Я унаследовал базу данных Access, которая используется для импорта некоторых данных в SQL. MDB открывается с формой в модальном режиме: не отображается ни меню, ни кнопки доступа. Я могу просматривать таблицы с содержимым с помощью инструмента «Подключение данных» в Visual Studio, но не вижу кода модуля.

Я смотрел на этот вопрос здесь, но ответы там не совсем то, что мне нужно. Есть ли способ принудительно закрыть форму (и получить доступ к модулям) или извлечь код VBA?

[РЕДАКТИРОВАТЬ] Я использую Access 2007, не уверен, что использовал оригинальный разработчик.

Ответы [ 2 ]

2 голосов
/ 06 января 2010

Удерживайте клавишу Shift при открытии базы данных. Это предотвратит загрузку запускаемого им автоматического сценария и позволит вам получить доступ к таблицам, запросам и сценариям VBA.

0 голосов
/ 07 января 2010

Это довольно длинное дополнение или комментарий к ответу Майкла Тодда в ответ на комментарий edosoft.

Вместо того, чтобы включить содержимое, проверьте параметры запуска (либо (файл-> параметры-> текущая база данных-> форма отображения) или (инструменты-> запуск-> форма отображения)) и удалите имя формы, сделав заметку, и убедитесь, что установлен флажок Разрешить полное меню (на той же странице). Вы также можете нажать Alt + F11 для отображения кода и проверить его на наличие кода запуска, наконец, посмотрите, есть ли макрос AutoRun, и переименуйте его.

РЕДАКТИРОВАТЬ комментарии

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

Sub SetStartForm(DBFile As String)
Dim prp As Object
Dim db As Database

Const PROPERTY_NOT_FOUND As Integer = 3270

    Set db = OpenDatabase(DBFile)

    db.Properties("StartupForm") = "(none)" 

    If Err.Number > 0 Then
        If Err.Number = PROPERTY_NOT_FOUND Then
            '' Create the new property, but this is not relevant in this case
         End If
    End If

    db.Close
    Set db = Nothing
    Set prp = Nothing
End Sub
...