获取VBA /访问源代码

时间:2011-07-20 00:15:04

标签: ms-access vba decompiler

我正在用C#重写旧版访问/ VBA应用程序。虽然我作为VBA程序员有限,但我认为代码是最低限度编译并且几乎像脚本一样运行?显然没有安全/ VBA你可以点击 alt + f11 来获取源代码是否有一种很好的方法来反编译/得到这段代码?

所以我尝试了这个:http://forums.databasejournal.com/showthread.php?t=34222

似乎是关于如何反编译.mdb文件。

然而,该程序很快就重新编译了 - 或者至少说它在左下角状态栏中重新编译。有什么想法吗?

4 个答案:

答案 0 :(得分:4)

以下是一些建议(我在上面的评论中重复了一些建议):

  • 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)并在顶部的下拉列表中选择项目名称来查看数据库中的内容(默认情况下会显示“”) p>

  • 最后,您可能会认为它可以受到Jet ULS的保护,但是从Access 2000开始,这不是很大可能,因为除了VBA项目上的密码之外什么都没有(即,它不是在Jet ULS下更长时间覆盖)。我希望如果它受密码保护,你会被提示输入密码,所以你已经知道了。

答案 1 :(得分:3)

如果是.mde你运气不好。您需要获取包含已编译的源VBA代码的.mdb以创建.mde

答案 2 :(得分:0)

  1. 导航到计算机上的程序文件夹。

  2. 打开MS Office文件夹

  3. 导航到MSAccess.exe并创建它的快捷方式。

  4. 将快捷方式移动到数据库所在的位置(使生活更轻松,您需要为每个数据库执行此操作以进行反编译)。

  5. (可选)将快捷方式重命名为“我的数据库名称为......的反编译程序”,以便您知道打开它会破坏已编译的代码

  6. 右键单击快捷方式以查看其属性。在快捷方式的属性对话框的目标字段中,您将看到类似“C:\ Program Files \ Microsoft Office \ Office \ MSACCESS.EXE”

  7. 的内容
  8. 在目标字段中,右箭头指向路径名的末尾,键入一个空格,然后在引号中键入(或粘贴)要进行反编译的MS Access文件位置的完整路径名(最简单的方法是从文件所在窗口的地址栏复制,如果你有地址栏显示的话。

  9. 仍在目标字段中,键入空格,然后不加引号,键入/ decompile

  10. 单击“确定”接受更改并关闭对话框。

  11. 按住Shift键并保持按下状态。

  12. 摆动你的耳朵

  13. 双击快捷方式。

  14. 转到数据库中的任何模块。

答案 3 :(得分:-1)

  • 如何查看源代码(.mdb文件)
    1. 选择文件
    2. 按住“shift”键
    3. 然后双击该文件而不释放“shift”键