Вот несколько предложений (некоторые из которых я повторяю из комментариев, которые я сделал выше):
Alt-F11 - не мой обычный метод открытия VBE, потому чтоЯ обычно хочу пойти в Немедленное Windows.Вместо этого попробуйте Ctrl-G.
Если Alt-F11 и Ctrl-G не открывают VBE, возможно, свойство базы данных AllowBypassKey было изменено на False.Чтобы получить код для его изменения, найдите файл справки Access для AllowBypassKey (в VBE, из меню справки, найдите «AllowBypassKey»).Однако вы не сможете запустить код в базе данных, которую вы пытаетесь исследовать, если AllowBypassKey выключен, поэтому вы можете запустить этот код:
//
On Error GoTo Change_Err
Dim db As DAO.Database
Dim prp As Variant
Const conPropNotFoundError = 3270
Set db = DBEngine.OpenDatabase("C:\Databases\MyDatabase.mdb")
db.Properties("AllowBypassProperty") = True
exitRoutine:
If Not (db Is Nothing) Then
db.Close
Set db = Nothing
End If
Exit Sub
errHandler:
If Err = conPropNotFoundError Then ' Property not found.
' do nothing and exit
Resume exitRoutine
End If
Тогда вы сможете открыть базу данных, удерживая нажатой клавишу SHIFT (которая обходит любые определенные подпрограммы запуска, которые, возможно, закрывали доступ к VBE).
Если файл является MDE, исходный код отсутствует.Вы можете узнать, является ли это MDE, проверив это свойство:
? CurrentDB.Properties ("MDE")
Если это MDE (файл может иметь любойрасширение), это вернет "T".Если это не MDE, он выдаст ошибку (потому что свойство не существует).
- Другие вещи, которые можно проверить, могут быть, сколько модулей есть.Если у вас есть открытая база данных и вы можете добраться до Немедленной Windows (Ctrl-G), то вам сообщат, есть ли какие-либо модули:
//
?CurrentProject.AllModules.Count
Вы также можете увидеть, что находится в базе данных, открыв Обозреватель объектов в VBE (F2) и выбрав имя проекта в раскрывающемся списке вверху (по умолчанию будет указано "" * 1037)*
Наконец, вы можете подумать, что он может быть защищен Jet ULS, но, начиная с Access 2000, это не так уж и сложно, поскольку в проекте VBA нет ничего, кроме пароля (т. е. он больше не распространяется на Jet ULS). Я ожидаю, что если бы он был защищен паролем, вам было бы предложено ввести пароль где-нибудь вдоль линии, так что вы уже знали бы это.