设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 3410|回复: 6
打印 上一主题 下一主题

VB如何动态加载Ribbon

[复制链接]
跳转到指定楼层
1#
发表于 2010-2-25 15:27:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
为何我用窗体加载后没有出现自定义功能区呢,又没有提示出错:
Public Function LoadRibbons()
'Load ribbons into the database
On Error GoTo Error1
Dim db As DAO.Database
Set db = Application.CurrentDb
Dim rs As DAO.Recordset
Set rs = db.OpenRecordset("tblRibbon")
' tblRibbon has to be replaced by your table name.
    Do Until rs.EOF
        Application.LoadCustomUI _
        rs("RibbonName").Value, rs("RibbonXML").Value
        rs.MoveNext
    Loop

Error1_Exit:
    On Error Resume Next
    rs.Close
    Set rs = Nothing
    Set db = Nothing
    Exit Function
Error1:
    Select Case Err
        Case 32609
        ' Ribbon already loaded
    Case Else
        MsgBox "Error: " & Err.Number & vbCrLf & _
               Err.Description, vbCritical, _
               "Error", Err.HelpFile, Err.HelpContext
    End Select
    Resume Error1_Exit
End Function


在窗体加载事件里放入:
Call CreateRibbon
打开窗体没有出错提示,但也看不到自定义功能区!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2010-3-15 11:21:47 | 只看该作者
功能区只能加载一次,然后设置窗体的功能区名称,那样窗体显示时才会显示功能区。
如果是全局功能区,Access会在自动宏中绑定之前加载的功能区,因此,要显示全局功能区,只能在自动宏中加载,启动窗体中加载则无法显示,由此可见自动宏的优先级别高于启动窗体。

点击这里给我发消息

3#
发表于 2010-3-15 11:24:11 | 只看该作者
AUTOEXEC宏中,写入RunCode宏,调用 LoadRibbons 函数。

这样可以完成手动加载。
4#
 楼主| 发表于 2010-4-11 20:08:12 | 只看该作者
但是如果为窗体设置功能区
就可以实现
而其关掉窗体后又会切换回全局功能区
应该有办法实现吧
5#
 楼主| 发表于 2010-4-11 20:11:13 | 只看该作者
而其我的全局功能区
菜单我写了权限
在没有连接数据库的前提下打开会出错
因为鉴权函数要访问数据库去查询
但是当我没有展开功能区时)(也就是功能区收起状态下)并不报错
但是如果展开就会出错
由此可见应该可以启动窗体后再加载吧
只是微软这方面资料太少
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-29 22:50 , Processed in 0.096219 second(s), 29 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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