gpt4 book ai didi

ms-access - 了解 VBA/Access 源代码

转载 作者:行者123 更新时间:2023-12-02 07:10:20 26 4
gpt4 key购买 nike

我正在用 C# 重写旧的 Access/VBA 应用程序。虽然我作为 VBA 程序员受到限制,但我的印象是代码被最低限度地编译并几乎作为脚本运行?显然没有安全性/VBA,您只需点击 alt + f11 即可获取源代码 是否有反编译/获取此代码的好方法?

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

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

然而,程序很快就重新编译了自己——或者至少说它在左下角的状态栏中重新编译了自己。有任何想法吗?

最佳答案

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

  • Alt-F11 不是我打开 VBE 的常用方法,因为我通常想进入即时窗口。请改用 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 的 Access )。
  • 如果文件是 MDE,则没有源代码。您可以通过检查此属性来确定它是否是 MDE:

    ?CurrentDB.Properties("MDE")

  • 如果它是 MDE(文件可以有任何扩展名),这将返回“T”。如果它不是 MDE,则会抛出错误(因为该属性不存在)。
  • 其他要检查的事情可能是有多少模块。如果您打开了数据库并且可以进入即时窗口 (Ctrl-G),那么这将告诉您是否有任何模块:

  • //
      ?CurrentProject.AllModules.Count
  • 您还可以通过在 VBE (F2) 中打开对象浏览器并在顶部的下拉列表中选择项目名称来查看数据库中的内容(默认情况下会显示“”
  • 最后,您可能认为它可以受到 Jet ULS 的保护,但从 Access 2000 开始,这不太可能,因为 VBA 项目上只有密码可用(即,Jet ULS 不再涵盖它) .我希望如果它受密码保护,系统会提示您输入密码,所以您已经知道了。
  • 关于ms-access - 了解 VBA/Access 源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6755639/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com