下載:
游客,如果您要查看本帖隱藏內(nèi)容請(qǐng) 回復(fù)
在 理解uSysRibbons用戶自定義功能區(qū)數(shù)據(jù)表 中,uSysRibbons 是存儲(chǔ)的數(shù)據(jù)庫(kù)打開時(shí) 自動(dòng) 加載的功能區(qū)定義,即,自定義的功能區(qū)在數(shù)據(jù)庫(kù)一打開的時(shí)候就加載,且在數(shù)據(jù)庫(kù)打開后,自定義功能區(qū)也不重新加載,就這么一次加載機(jī)會(huì),沒(méi)有控制的機(jī)會(huì)。這就很不爽了!那么如何控制想要加載的功能區(qū)呢?
Access 2007 以上版本提供了 Application.LoadCustomUI 加載代表自定義功能區(qū)的 XML 的方法。
那么我們要怎么做呢?
1、首先,就是要不讓其自動(dòng)加載,辦法是不讓數(shù)據(jù)庫(kù)中存在 uSysRibbons 表。將 uSysRibbons 改名,本例中改為 uSysRibbonsAdmin。
操作步驟:
按 Alt+F11 鍵,進(jìn)入 VBA 編輯器,按 Ctrl+G 打開立即窗口,執(zhí)行如下命令:
- DoCmd.Rename "uSysRibbonsAdmin", acTable, "uSysRibbons"
復(fù)制代碼 另外再多復(fù)制一份為 uSysRibbonsUser:
- DoCmd.CopyObject , "uSysRibbonsUser", acTable, "uSysRibbonsAdmin"
復(fù)制代碼 說(shuō)明:uSysRibbonsAdmin 針對(duì) Admin 登錄用戶,uSysRibbonsUser 針對(duì) User 登錄用戶。兩個(gè)不同用戶分別使用息的自定義功能區(qū)。
打開 uSysRibbonsAdmin 表。
- DoCmd.OpenTable "uSysRibbonsAdmin"
復(fù)制代碼 將 RibbonName 字段為 “main” 行中的 RibbonXML 字段中的 “<ribbon startFromScratch="true">” 改為 “<ribbon startFromScratch="false">”,以示兩個(gè)不同用戶加載的自定義功能區(qū)的區(qū)別。
2、編寫一段加載指定數(shù)據(jù)表中的存儲(chǔ)自定義功能區(qū)的代碼。
在 VBA 項(xiàng)目中,插入一個(gè)模塊,將其命名為“modRibbon”,在該模塊中插入“LoadRibbonsFromTable”函數(shù)。
- Public Function LoadRibbonsFromTable(ribbonTableName As String)
- Dim i As Integer
- Dim db As DAO.Database
- Set db = Application.CurrentDb
-
- For i = 0 To (db.TableDefs.Count - 1)
- If db.TableDefs(i).Name = ribbonTableName Then ' 匹配指定的數(shù)據(jù)表
- Dim rs As DAO.Recordset
- Set rs = CurrentDb.OpenRecordset(db.TableDefs(i).Name)
- rs.MoveFirst
-
- Do While Not rs.EOF
- Application.LoadCustomUI rs("RibbonName").Value, rs("RibbonXml").Value
- rs.MoveNext
- Loop
-
- rs.Close
- Set rs = Nothing
- End If
- Next i
-
- db.Close
- Set db = Nothing
- End Function
復(fù)制代碼
|