我曾希望在MS Access 2010數據庫中製作一個簡單的表單,用戶可以在其中選擇要使用的主題。你如何通過vba更改數據庫的主題? Google對這個問題沒有太大的幫助。MS Access 2010通過VBA更改主題
回答
我知道這個問題前一段時間被問到,但由於我在研究設置主題時遇到了它,我以爲我應該嘗試提供一些我發現的內容。
當談到讓用戶選擇主題時,我認爲最簡單的方法就是將「顏色」按鈕放入功能區。如果您碰巧製作了自己的自定義功能區,則可以使用<control idMso="ThemeColorsGallery" />
來引用「顏色」選項。
如果你想嘗試對發生的事情有更精確的控制,我想我可能已經找到了一個選擇,但是它有點牽扯,我還沒有弄清楚細節。不過,我想發佈它,因爲我認爲有人可能想要使用它。
在控制圖像庫功能時,我意識到隱藏的「MSysResources」表中有一個「Office主題」條目。我相信「MySysResources」表中的「Office主題」行中的任何內容都決定了程序啓動時加載的主題。我測試這個想法的方式是我選擇了一個主題,然後到桌面並將附件保存到桌面。然後,我去了,選擇了一個不同的主題,並通過查看我的一些表格來確保它已經到位。然後,我回到桌子上,刪除「Office Theme」行中的內容,並將保存的文件上傳回附件。關閉並重新打開程序後,我保存到桌面上,然後重新加載到當前主題頂部的主題是正在使用的主題。
我想這可能會被使用的方式是,您可以通過代碼分配該附件。特別是,如果您想根據特定於您的程序的配置選項覆蓋默認設置,那麼看起來好像它可能很有用。
更新15年8月18日: 有人要求瞭解我是如何能夠通過VBA來設置我的主題額外的細節,所以我會在這裏爲他們提供。基本理論是我將MSysResources附件字段中的數據保存到表中。然後,如果我需要用保存的主題覆蓋當前主題,則從我的表中提取它並將其保存在適當的MSysResources記錄中。請注意,我使用MySQL作爲我的表格存儲平臺,並使用名爲「Lgo」的MediumBlob字段來存儲數據。
以下是我使用的兩個功能。第一個函數將主題保存到我的MySQL表中。第二個函數提取保存的數據並將其保存在MSysResourcestable中當前主題的頂部。請注意,要查看第二個功能的效果,您必須在運行該功能後關閉並重新打開您的程序。
Function SveThm()'Save Theme
Dim MSR As Recordset, Atc As Recordset, LR As Recordset
Set MSR = CurrentDb.OpenRecordset("SELECT * FROM MSysResources WHERE [Name]='Office Theme'", dbOpenDynaset)
If MSR.RecordCount > 0 Then
Set Atc = MSR!Data.Value
Set LR = CurrentDb.OpenRecordset("SELECT * FROM tbllgo;", dbOpenDynaset)
If LR.RecordCount = 0 Then LR.AddNew Else LR.Edit
LR!Stn = LgoStn
LR!Lgo = CStr(Atc!FileData)
LR!Typ = Typ
LR.Update
LR.Close
MsgBox "Your theme has been saved."
End If
End Function
Function SetMSys()'Set MSysResources
Dim MSys As Recordset, Lgo As Recordset, Atc As Recordset
Set MSys = CurrentDb.OpenRecordset("SELECT * FROM MSysResources WHERE [Name]='Office Theme'", dbOpenDynaset)
If MSys.RecordCount > 0 Then
MSys.Edit
Set Atc = MSys!Data.Value
Atc.Edit
Set Lgo = CurrentDb.OpenRecordset("SELECT Lgo FROM tbllgo;", dbOpenDynaset)
If Lgo.RecordCount > 0 Then Atc!FileData = Lgo!Lgo
Lgo.Close
Atc.Update
MSys.Update
End If
End Function
我已經成功地爲我的系統實現了這一點。如果有人對我如何做的細節感興趣,請告訴我。 – 2015-07-17 23:01:23
- 1. MS Access 2010 VBA
- 2. 通過Excel的MS Access VBA
- 3. MS Access 2010 vba查詢
- 4. 可能通過VBA更改MS Access子表單字段?
- 5. MS Access VBA問題
- 6. MS Access 2010 VBA整數變量不會在循環中更改
- 7. MS Access 2016 VBA - 通過VBA以表格形式修改TextBox
- 8. ms access access vba code通過表格更新記錄
- 9. MS-Access更改命令行參數vba
- 10. 通過PHP和MS Access 2010顯示主鍵
- 11. MS Access 2010中的問題
- 12. vba access 2010更新過濾子表格
- 13. MS ACCESS vba select
- 14. MS ACCESS vba - error
- 15. 的MS Access VBA
- 16. 更改Visual Studio 2010主題
- 17. MS-ACCESS通過文件對話框通過vba複製文件
- 18. MS Word,DOCX,Open XML - 通過更改XML來應用主題
- 19. 遷移MS Access 2003中的MS Access 2010
- 20. MS Access Permissions(MS Office 2010)
- 21. VB 2010 MS ACCESS datetime
- 22. MS Access 2010 - 通過時間戳過濾的錯誤
- 23. MS Access 2010:字符串通配符
- 24. MS Access VBA代碼
- 25. Com Interop問題Silverlight 4和MS Access 2010
- 26. ms access 2010沒有主鍵的更新鏈接表
- 27. 記錄表更改 - MS Access
- 28. 通過VC++連接MS Access
- 29. 通過的FileDialog在MS Access
- 30. 通過VBA通過VBA訪問Excel導出更改行高
我不知道如何做到這一點。解決方法是使用一些全局變量來存儲背景顏色,前面的顏色等。通過表單選擇「主題」來設置這些變量。然後,在每個表單的onload事件上,將這些屬性(背景顏色,前景等)設置爲這些值。你可以有一個這樣做的子。此外,如果有必要,遍歷表單的控件並設置它們('對於form.controls中的每個控件'),我不確定是否有一個簡單的方法來設置主題,但如果你想投入關於小時,你可以編碼你自己的。 – Scotch 2013-02-13 23:56:48
我不確定這是否值得。我剛剛從Access 2003轉換到2010,並且正在對數據庫進行大修,所以我決定更新視覺效果。我認爲,雖然我在這裏,但我不妨利用自2010年以來的主題,但顯然它並不像應該那麼容易。哦,謝謝。 – NinjaMeTimbers 2013-02-14 15:48:36