免费高清特黄a大片,九一h片在线免费看,a免费国产一级特黄aa大,国产精品国产主播在线观看,成人精品一区久久久久,一级特黄aa大片,俄罗斯无遮挡一级毛片

分享

用VBA自定義WORD菜單和工具欄,實(shí)現(xiàn)多風(fēng)格界面

 飛來山上 2015-12-28

用VBA自定義WORD菜單和工具欄,實(shí)現(xiàn)多風(fēng)格界面

(2011-06-26 08:26:05)

    使用一個(gè)包含VBA代碼的Word模板文件,通過“加載”方式直接運(yùn)行,運(yùn)行后將在Word XP的主界面中新增菜單和工具欄,并提供了幾套適合不同工作環(huán)境的界面布局,單擊相應(yīng)菜單即可實(shí)現(xiàn)不同風(fēng)格界面布局的切換。
標(biāo)準(zhǔn)風(fēng)格:顯示主菜單欄以及常用、格式兩個(gè)工具欄,并將文本編輯區(qū)設(shè)置為“藍(lán)底白字”。
簡單風(fēng)格:僅顯示主菜單欄和程序新建的工具欄,并將文本編輯區(qū)恢復(fù)為“白底黑字”,如圖1所示。單擊工具欄上的按鈕,則會(huì)顯示對(duì)話框。
繪圖和制表風(fēng)格:顯示主菜單欄和常用、格式、繪圖、圖片、符號(hào)欄以及表格和邊框工具欄等,并將文本編輯區(qū)恢復(fù)為“白底黑字”。
用VBA自定義WORD菜單和工具欄,實(shí)現(xiàn)多風(fēng)格界面
多風(fēng)格界面的實(shí)現(xiàn)方法: 

一、創(chuàng)建工具欄和菜單的相關(guān)知識(shí):

 

1.CommandBars集合

Office軟件中,每個(gè)軟件所有的工具欄均可用該集合來代表,該集合可通過名稱或索引號(hào)來指定菜單欄或工具欄,如“CommandBars("Formatting")”,即通過名稱“Formatting”指定了“格式工具欄”。Add方法用于新建工具欄,并返回CommandBar對(duì)象。

2.CommandBar對(duì)象

該對(duì)象代表工具欄,新建工具欄的控件均以該對(duì)象為載體,是VBA工具欄開發(fā)的核心對(duì)象,其常用方法和屬性如下:

Position屬性:用于設(shè)置工具欄的位置,可通過VBA常量將工具欄的位置設(shè)置為置頂、居左、居右、置下或浮動(dòng)。

Visible屬性:用于設(shè)置工具欄是否可見。

Enabled屬性:用于設(shè)置工具欄是否可用。

Reset方法:將內(nèi)置工具欄的設(shè)置重置為默認(rèn)設(shè)置,刪除其中的自定義控件,在恢復(fù)軟件原有工具欄或菜單時(shí)非常有用。

3.CommandBarPopup 對(duì)象

  該對(duì)象代表工具欄中的一個(gè)彈出式控件,其實(shí)Office軟件的菜單也可理解為一個(gè)彈出式的控件,而菜單欄可以視為“另類”的工具欄。因此,通過該對(duì)象即可添加菜單欄,方法和添加工具欄類似。

4.CommandBarButton對(duì)象

  該對(duì)象代表工具欄的按鈕控件,是常用的工具欄二次開發(fā)控件,其常用方法和屬性如下:
OnAction屬性:用于設(shè)置VBA代碼過程名(該代碼過程不可使用參數(shù)),該過程在單擊按鈕后運(yùn)行。

 

Style屬性:用于設(shè)置工具欄按鈕的顯示方式,可通過VBA常量進(jìn)行設(shè)置。

FaceId屬性:用于設(shè)置工具欄按鈕的圖標(biāo)編號(hào),即設(shè)置工具欄按鈕的外觀。自定義圖標(biāo)的工具欄按鈕,其FaceId屬性值需設(shè)置為0。

BeginGroup屬性:用于設(shè)置控件是否分組顯示。

5.CommandBarComboBox對(duì)象

  該對(duì)象代表工具欄中的組合框、下拉框或文本框控件,也是常用的工具欄二次開發(fā)控件。

二、WORD自動(dòng)宏

  為使模板中的VBA代碼可在某些特定操作中(如加載或打開時(shí))自動(dòng)執(zhí)行,必須通過VBA提供的自動(dòng)宏來實(shí)現(xiàn)。

  自動(dòng)宏是一些特殊的宏,這些宏可在執(zhí)行特定操作時(shí)運(yùn)行(類似DOS時(shí)代在系統(tǒng)啟動(dòng)時(shí)執(zhí)行的“AutoExec.bat”文件)。以Word XP為例,其提供的自動(dòng)宏如下所述:

AutoExec宏:啟動(dòng)Word 或加載全局模板觸發(fā)。
AutoNew宏:生成新文檔時(shí)觸發(fā)。
AutoOpen宏:打開已有文檔時(shí)觸發(fā)。
AutoClose宏:關(guān)閉文檔時(shí)觸發(fā)。
AutoExit宏:退出Word XP或卸載全局模板時(shí)觸發(fā)。

 

  正如其他宏,自動(dòng)宏可以保存于 Normal 模板、其他模板或文檔之中。唯一的例外是:AutoExec 宏,它只有保存在 Startup 文件夾的 Normal 模板或共用模板中才能自動(dòng)運(yùn)行。


    在命名沖突的情況下(多個(gè)自動(dòng)宏名相同),Word 運(yùn)行上下文中最近的自動(dòng)宏。例如,如果同時(shí)在文檔和附加模板中建立了 AutoClose 宏,只有文檔中的宏能夠運(yùn)行。如在 Normal 模板中建立了 AutoNew 宏,只有當(dāng)文檔或其附加模板中沒有名為 AutoNew 的宏時(shí),該自動(dòng)宏才能運(yùn)行。


    如果用戶按下 Shift 鍵可以終止宏的運(yùn)行。例如,新建一個(gè)文檔(該文檔基于包含 AutoNew 宏的模板),按下 Shift 鍵可以終止 AutoNew 宏的運(yùn)行。方法是按下 Shift 鍵的同時(shí)單擊【文件】菜單下【新建】對(duì)話框中的【確定】按鈕,直到顯示新文檔。在運(yùn)行可能觸發(fā)自動(dòng)宏的宏時(shí),可用下列指令終止自動(dòng)宏的運(yùn)行。
    WordBasic.DisableAutoMacros


注意:
    宏病毒就是利用自動(dòng)宏的特點(diǎn)來自動(dòng)進(jìn)行傳播的,并不需要人工運(yùn)行。

 

 三、新建工具欄和自定義菜單的代碼:

錄制“宏”之后,在VBA的工程資源管理器中將自動(dòng)添加一個(gè)名稱為“NewMacros”的模塊,雙擊該模塊的圖標(biāo),即可顯示代碼編輯窗口。

1.定義一些全局變量
Dim Obj_Toolbar As CommandBar '代表工具欄的變量
Dim Obj_Menu As CommandBarPopup '代表菜單的變量
Dim Obj_Toolbar_button As CommandBarButton '代表菜單項(xiàng)和按鈕的變量

2.編制生成工具欄和菜單的子程序
Sub addbutton() '創(chuàng)建工具欄和菜單并設(shè)置屬性的子程序
    deletebutton '調(diào)用刪除工具欄和菜單的子程序
    Set Obj_Toolbar = Application.CommandBars.Add("My_Custom_Bar") '新建工具欄,“My_Custom_Bar”代表工具欄的名稱
    Set Obj_Menu = Obj_Toolbar.Controls.Add(Type:=msoControlPopup, ID:=1) '在工具欄上新建下拉菜單,“ID:=1”代表該工具欄的功能由用戶自定義,下同
    With Obj_Menu '設(shè)置下拉菜單的屬性
        .Caption = "風(fēng)格切換" '設(shè)置標(biāo)題
        .BeginGroup = True '設(shè)置分組
    End With
    Set Obj_Toolbar_button = Obj_Menu.Controls.Add(Type:=msoControlButton, ID:=1) '新建菜單項(xiàng),下同
    With Obj_Toolbar_button '設(shè)置菜單項(xiàng)的屬性,下同
        .Caption = "標(biāo)準(zhǔn)風(fēng)格"
        .BeginGroup = True
        .OnAction = "Standard_Style" '設(shè)置單擊菜單項(xiàng)執(zhí)行的子程序名稱
    End With
    Set Obj_Toolbar_button = Obj_Menu.Controls.Add(Type:=msoControlButton, ID:=1) '新建其他的菜單項(xiàng),并設(shè)置屬性
    With Obj_Toolbar_button
        .Caption = "簡單風(fēng)格"
        .BeginGroup = True
        .OnAction = "Simple_Style"
    End With
    Set Obj_Toolbar_button = Obj_Menu.Controls.Add(Type:=msoControlButton, ID:=1)
    With Obj_Toolbar_button
        .Caption = "繪圖和制表風(fēng)格"
        .BeginGroup = True
        .OnAction = "Draw_Table_Style"
    End With
    Set Obj_Toolbar_button = Obj_Toolbar.Controls.Add(Type:=msoControlButton, ID:=1) '新建工具欄按鈕
    With Obj_Toolbar_button '設(shè)置按鈕的屬性
        .Caption = "關(guān)于"
        .Style = msoButtonIconAndCaption
        .FaceId = 984
        .OnAction = "Show_Msg"
    End With
    With Obj_Toolbar '設(shè)置工具欄的屬性
        .Visible = True '工具欄可視
        .Enabled = True '工具欄可用
        .Position = msoBarTop '工具欄置頂
    End With
    Set Obj_Menu = Application.CommandBars("Menu Bar").Controls.Add(Type:=msoControlPopup, ID:=1) '在Word XP的主菜單中新建菜單,“Menu Bar”代表Word XP主菜單的名稱
    With Obj_Menu '設(shè)置新建菜單的屬性
        .Caption = "風(fēng)格切換"
    End With
    Set Obj_Toolbar_button = Obj_Menu.Controls.Add(Type:=msoControlButton, ID:=1) '在新建菜單中添加菜單項(xiàng),下同
    With Obj_Toolbar_button '設(shè)置新建菜單項(xiàng)的屬性,下同
        .Caption = "標(biāo)準(zhǔn)風(fēng)格"
        .BeginGroup = True
        .OnAction = "Standard_Style"
    End With
    Set Obj_Toolbar_button = Obj_Menu.Controls.Add(Type:=msoControlButton, ID:=1) '新建其他的菜單項(xiàng),并設(shè)置屬性
    With Obj_Toolbar_button
        .Caption = "簡單風(fēng)格"
        .BeginGroup = True
        .OnAction = "Simple_Style"
    End With
    Set Obj_Toolbar_button = Obj_Menu.Controls.Add(Type:=msoControlButton, ID:=1)
    With Obj_Toolbar_button
        .Caption = "繪圖和制表風(fēng)格"
        .BeginGroup = True
        .OnAction = "Draw_Table_Style"
    End With
End Sub
3.編制刪除工具欄和菜單的子程序
Sub deletebutton() '刪除工具欄和菜單的子程序
    Dim tempbar As CommandBar '定義臨時(shí)工具欄變量
    On Error Resume Next '該語句用于忽略錯(cuò)誤
    Application.CommandBars("Menu Bar").Reset '重新設(shè)置Word XP的主菜單,即刪除新建的菜單
    For Each tempbar In Application.CommandBars '通過“For Each…Next”語句遍歷Word XP所有的工具欄
        If tempbar.Name = "My_Custom_Bar" Then '如名稱和新建的工具欄相同
            tempbar.Visible = False '設(shè)置為不可視
            tempbar.Delete '刪除該工具欄
        End If
    Next
End Sub

4。編寫控件和菜單項(xiàng)對(duì)應(yīng)的事件代碼
'“簡單風(fēng)格”子程序,添加“Private”關(guān)鍵字用于將該子程序設(shè)置為局部型,下同
Private Sub Simple_Style()
    resetall '調(diào)用重新設(shè)置所有工具欄的子程序,下同
    '進(jìn)行“簡單風(fēng)格”相對(duì)應(yīng)的操作,在前述內(nèi)容中已進(jìn)行了解讀,下同
    CommandBars("Standard").Visible = False
    CommandBars("Formatting").Visible = False
    CommandBars("Drawing").Visible = False
    Options.BlueScreen = False
End Sub
'“標(biāo)準(zhǔn)風(fēng)格”子程序
Private Sub Standard_Style()
    resetall
    CommandBars("Standard").Visible = True
    CommandBars("Formatting").Visible = True
    Options.BlueScreen = True
End Sub
'“繪圖和制表風(fēng)格”子程序
Private Sub Draw_Table_Style()
    resetall
    CommandBars("Standard").Visible = True
    CommandBars("Formatting").Visible = True
    CommandBars("Drawing").Visible = True
    CommandBars("Tables and Borders").Visible = True
    CommandBars("符號(hào)欄").Visible = True
    CommandBars("Picture").Visible = True
    Options.BlueScreen = False
End Sub
 5. 編寫輔助的子程序
  上達(dá)三段代碼中,均需調(diào)用一個(gè)重新設(shè)置所有工具欄的子程序,該子程序的功能為設(shè)置所有相關(guān)工具欄為不可視,然后按需要顯示相關(guān)的工具欄,代碼如下所示:

'重新設(shè)置所有工具欄的子程序
Private Sub resetall()
    '以下代碼很容易理解,可通過修改前面錄制的“宏”代碼來編寫
    CommandBars("Standard").Visible = False
    CommandBars("Formatting").Visible = False
    CommandBars("Drawing").Visible = False
    CommandBars("Tables and Borders").Visible = False
    CommandBars("符號(hào)欄").Visible = False
    CommandBars("Picture").Visible = False
    Options.BlueScreen = False
End Sub

 6. 編寫輔助的子程序
  工具欄按鈕單擊后需通過子程序來顯示對(duì)話框,代碼如下所示:
Private Sub Show_Msg()
    '調(diào)用“MsgBox”函數(shù)來顯示對(duì)話框,可參見VBA的幫助
    MsgBox "歡迎來到VBA的世界!", vbInformation, "信息"
End Sub

7. 保存相應(yīng)的格式

    為實(shí)現(xiàn)打開文件時(shí)自動(dòng)運(yùn)行代碼并在關(guān)閉時(shí)恢復(fù)Word的原有設(shè)置,需將其保存為模板。然后在代碼模塊中添加“AutoExec”自動(dòng)宏,并通過該宏調(diào)用前面創(chuàng)建的“addbutton”過程,此外還需添加“AutoExit”自動(dòng)宏,并通過該宏調(diào)用前面創(chuàng)建的“deletebutton”過程,代碼如下所示:
Sub AutoExec()
    addbutton
End Sub
Sub AutoExit()
    deletebutton
End Sub


參考:http://school./office/word/2006-07-04/1151991787d7933.shtml

分享:

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多