ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3265|回复: 6

请教,如何隐藏Access的菜单启动项

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-11-29 08:53 | 显示全部楼层 |阅读模式
本帖最后由 shepdog 于 2012-11-29 08:55 编辑

我们经常在 菜单的“工具”->“启动项",设置启动参数。
为了数据库安全,我希望能够在设置好了以后,用VBA语句,把”启动项“隐藏起来,在需要更改的时候,再修改VBA打开。

请问,怎么能够在VBA里写语句,隐藏启动项,或者使启动项失效,无法设置呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-11-29 09:01 | 显示全部楼层
题外话
我的安全设想是:
在启动项关闭 access特殊键,在VBA设置工程密码,然后再把启动项禁用。
这样,用户拿到数据库,也无法打开数据库对象,避免在表或视图直接修改数据;也无法查看VBA代码,从而提高数据库的安全性。进而把修改数据的绑定窗体改为非绑定窗体,尽量只通过VBA语句保存数据,进一步提高数据库的安全性。

TA的精华主题

TA的得分主题

发表于 2012-11-30 09:15 | 显示全部楼层
窗体中设置如下
Private Sub Form_Open(Cancel As Integer)
  Application.RunCommand acCmdAppMinimize
DoCmd.Restore

公用模块可以设置如下
Public Sub AdminStartupProperties() '启动管理员权限
Const DB_Text As Long = 10
Const DB_Boolean As Long = 1
    ChangeProperty "StartupForm", DB_Text, "frmLoad"
    ChangeProperty "StartupShowDBWindow", DB_Boolean, True
    ChangeProperty "StartupShowStatusBar", DB_Boolean, True
    ChangeProperty "AllowBuiltinToolbars", DB_Boolean, True
    ChangeProperty "AllowFullMenus", DB_Boolean, True
    ChangeProperty "AllowBreakIntoCode", DB_Boolean, True
    ChangeProperty "AllowSpecialKeys", DB_Boolean, True
    ChangeProperty "AllowBypassKey", DB_Boolean, True
    ChangeProperty "AppTitle", DB_Text, gAppName
    ChangeProperty "AppIcon", DB_Text, CurrentProject.Path & "\wh.ico"
MsgBox "管理员权限已开启,请重新启动程序!"
End Sub

Public Sub UserStartupProperties() '用户权限
Const DB_Text As Long = 10
Const DB_Boolean As Long = 1

If CurrentDb().Properties("StartupShowDBWindow") = True Then
    ChangeProperty "StartupForm", DB_Text, "frmLoad"
    ChangeProperty "StartupShowDBWindow", DB_Boolean, False
    ChangeProperty "StartupShowStatusBar", DB_Boolean, False
    ChangeProperty "AllowBuiltinToolbars", DB_Boolean, True
    ChangeProperty "AllowFullMenus", DB_Boolean, False
    ChangeProperty "AllowBreakIntoCode", DB_Boolean, False
    ChangeProperty "AllowSpecialKeys", DB_Boolean, False
    ChangeProperty "AllowBypassKey", DB_Boolean, False
    ChangeProperty "AppTitle", DB_Text, gAppName
    ChangeProperty "AppIcon", DB_Text, CurrentProject.Path & "\wh.ico"
  End If
End Sub
Private Function ChangeProperty(strPropName As String, varPropType As Variant, varPropValue As Variant) As Integer
    '启动属性设置
    Dim dbs As Object, prp As Variant
    Const conPropNotFoundError = 3270

    Set dbs = CurrentDb
    On Error GoTo Change_Err
    dbs.Properties(strPropName) = varPropValue
    ChangeProperty = True

Change_Bye:
    Exit Function

Change_Err:
    If Err = conPropNotFoundError Then    ' Property not found.
        Set prp = dbs.CreateProperty(strPropName, _
            varPropType, varPropValue)
        dbs.Properties.Append prp
        Resume Next
    Else
        ' 未知错误。
        ChangeProperty = False
        Resume Change_Bye
    End If
End Function

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-11-30 17:10 | 显示全部楼层
rainless 发表于 2012-11-30 09:15
窗体中设置如下
Private Sub Form_Open(Cancel As Integer)
  Application.RunCommand acCmdAppMinimize
...

非常感谢!
请问是在验证登陆密码后,按照权限的不同,分别调用AdminStartupProperties 过程和UserStartupProperties过程吗?

TA的精华主题

TA的得分主题

发表于 2012-12-3 07:57 | 显示全部楼层
默认就UserStartupProperties,在需要的时候再调用AdminStartupProperties,也就是给管理员指定这个。

TA的精华主题

TA的得分主题

发表于 2012-12-3 16:40 | 显示全部楼层
请问,你用的是Access2007吗?

TA的精华主题

TA的得分主题

发表于 2012-12-4 14:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
2003,07就一脑残的版本
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-18 02:24 , Processed in 0.043958 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表