Office中国论坛/Access中国论坛

标题: VB如何动态加载Ribbon [打印本页]

作者: LeeTien    时间: 2010-2-25 15:27
标题: VB如何动态加载Ribbon
为何我用窗体加载后没有出现自定义功能区呢,又没有提示出错:
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
打开窗体没有出错提示,但也看不到自定义功能区!
作者: zhuyiwen    时间: 2010-3-15 11:21
功能区只能加载一次,然后设置窗体的功能区名称,那样窗体显示时才会显示功能区。
如果是全局功能区,Access会在自动宏中绑定之前加载的功能区,因此,要显示全局功能区,只能在自动宏中加载,启动窗体中加载则无法显示,由此可见自动宏的优先级别高于启动窗体。
作者: zhuyiwen    时间: 2010-3-15 11:24
AUTOEXEC宏中,写入RunCode宏,调用 LoadRibbons 函数。

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




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3