Получение в VBA / Доступ к исходному коду - PullRequest
1 голос
/ 20 июля 2011

Я переписываю устаревшее приложение доступа / VBA на C #.Хотя я ограничен как программист VBA, у меня сложилось впечатление, что код минимально скомпилирован и выполняется почти как скрипт?Очевидно, нет безопасности / VBA, вы можете просто нажать alt + f11 , чтобы получить исходный код. Есть ли хороший способ декомпилировать / получить этот код?Я попробовал это: http://forums.databasejournal.com/showthread.php?t=34222

, который, кажется, о том, как декомпилировать .mdb файлы.

Однако программа быстро перекомпилировала себя - или, по крайней мере, говорит, что перекомпилирует себя в левой нижней строке состояния.Есть идеи?

Ответы [ 4 ]

4 голосов
/ 21 июля 2011

Вот несколько предложений (некоторые из которых я повторяю из комментариев, которые я сделал выше):

  • 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). Я ожидаю, что если бы он был защищен паролем, вам было бы предложено ввести пароль где-нибудь вдоль линии, так что вы уже знали бы это.

3 голосов
/ 20 июля 2011

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

0 голосов
/ 15 сентября 2017
  • КАК ПРОСМОТРЕТЬ КОД ИСТОЧНИКА (ФАЙЛ .mdb)
    1. Выберите файл
    2. Удерживайте клавишу «Shift»
    3. Затем дважды щелкните файл, не отпуская клавишу «Shift»
0 голосов
/ 20 июля 2011
  1. Перейдите в папки программ на вашем компьютере.

  2. Открыть папку MS Office

  3. Перейдите к MSAccess.exe и создайте для него ярлык.

  4. Переместите ярлык туда, где находится ваша база данных (облегчает жизнь, и вам нужно будет сделать это для каждой базы данных для декомпиляции).

  5. (необязательно) Переименуйте ярлык во что-то вроде "декомпилятор для моей базы данных, имя которой ....", чтобы вы знали, что его открытие срывает ваш скомпилированный код

  6. Щелкните правой кнопкой мыши по ярлыку, чтобы просмотреть его свойства. В поле «Цель» диалогового окна свойств для ярлыка вы увидите что-то вроде «C: \ Program Files \ Microsoft Office \ Office \ MSACCESS.EXE»

  7. В целевом поле, стрелка вправо до конца имени пути, введите пробел, а затем, в кавычках, введите (или вставьте) полный путь к месту расположения вашего файла MS Access для декомпиляции ( Самый простой способ - скопировать из адресной строки окна, в котором находится файл, если у вас отображается адресная строка).

  8. В поле «Цель» введите пробел, а затем без кавычек введите / декомпилируйте

  9. Нажмите кнопку ОК, чтобы принять изменения и закрыть диалоговое окно.

  10. Удерживайте нажатой клавишу Shift и удерживайте ее нажатой.

  11. шевелить ушами

  12. Дважды щелкните ярлык.

  13. Перейти к любому модулю в вашей базе данных.

...