自制Excel浮動工具條

2007/7/17更新

如果你需要此VBA加載宏,請訪問 http://my.mofile.com/benjaminwan

或直接提取

簡體中文:http://pickup.mofile.com/5505481867922136

繁體中文:http://pickup.mofile.com/0900889919321666

 

本文假設讀者有一定的ExcelVBA基礎。故某些基礎問題不做詳解。

一、原理

實際上每次打開Excel,也會每次都加載宏。

故想讓浮動工具條在每次打開Excel後都出現,只要在你寫程序的Excel文件的Thisworkbook裏做些手腳就可以了。

 

如果是XLA 文件,VBA入口爲 Workbook_AddinInstall/Workbook_AddinUninstall

如果是XLS 文件,VBA入口爲 Workbook_Open/Workbook_BeforeClose

一個是打開後執行的(可以用於加載工具條),一個是要關閉前執行(可以用來卸載工具條)

 

二、先做一個添加工具條函數吧

先添加一個模塊,然後在這個模塊中寫入如下語句

先定義一下工具條的名字及工具條上按鈕的名字

Public Const TECH_TOOLBAR_NAME As String = "技術工具箱"

Public Const CPK_TOOL_NAME As String = "CPK工具"

Public Const MAP_TOOL_NAME As String = "單分佈圖工具"

Public Const Multi_MAP_TOOL_NAME As String = "對比分佈圖工具"

Public Const STAMP_TOOL_NAME As String = "電子印章工具"

Public Const ABOUT_TOOL_NAME As String = "關於"

 

下面寫一個添加工具條的函數

Public Sub AddToolbar()

Dim mybar As Object

 

'添加工具條,msoBarTop即代表浮動工具條

Application.CommandBars.Add Name:=TECH_TOOLBAR_NAME, >

CommandBars(TECH_TOOLBAR_NAME).Visible = True

 

'添加CPK按鈕,Before:=1代表這個按鈕在工具條的第一格

Set mybar = Application.CommandBars(TECH_TOOLBAR_NAME).Controls.Add(Type:=msoControlButton, Before:=1)

ThisWorkbook.Worksheets("source").Shapes("Icon_CPK").Copy  '設置按鈕圖標

'這一步要先在此文檔裏建一個名爲source的工作表,然後再這工作表裏帖入一個圖像或藝

術字,並把這個圖像的名稱改爲Icon_CPK

With mybar

.OnAction = "show_CPK_window"   '按下此按鈕要執行的函數

.PasteFace

.TooltipText = CPK_TOOL_NAME    '鼠標停在此按鈕上要顯示的文字

End With

 

'添加單分佈圖工具按鈕

Set mybar = Application.CommandBars(TECH_TOOLBAR_NAME).Controls.Add(Type:=msoControlButton, Before:=2)

ThisWorkbook.Worksheets("source").Shapes("Icon_MAP").Copy

With mybar

.OnAction = "show_MAP_window"

.PasteFace

.TooltipText = MAP_TOOL_NAME

End With

 

'添加對比分佈圖工具按鈕

Set mybar = Application.CommandBars(TECH_TOOLBAR_NAME).Controls.Add(Type:=msoControlButton, Before:=3)

ThisWorkbook.Worksheets("source").Shapes("ICON_MAP_Multi").Copy

With mybar

.OnAction = "show_multi_MAP_window"

.PasteFace

.TooltipText = Multi_MAP_TOOL_NAME

End With

 

'添加電子印章工具按鈕

Set mybar = Application.CommandBars(TECH_TOOLBAR_NAME).Controls.Add(Type:=msoControlButton, Before:=4)

ThisWorkbook.Worksheets("source").Shapes("ICON_STAMP").Copy

With mybar

.OnAction = "show_STAMP_window"

.PasteFace

.TooltipText = STAMP_TOOL_NAME

End With

 

'添加about按鈕

Set mybar = Application.CommandBars(TECH_TOOLBAR_NAME).Controls.Add(Type:=msoControlButton, Before:=5)

ThisWorkbook.Worksheets("source").Shapes("ICON_about").Copy

With mybar

.OnAction = "show_about_window"

.PasteFace

.TooltipText = ABOUT_TOOL_NAME

End With

End Sub

 

三、刪除工具條

Public Sub Delmenu()

Application.CommandBars(TECH_TOOLBAR_NAME).Delete

End Sub

 

四、在Thisworkbook中添加如下代碼,使添加按鈕函數可以自動運行

'下代碼可以實現:不論xlsxla都能夠自動添加按鈕

Private Sub Workbook_AddinInstall()

Application.ScreenUpdating = False

If GetSetting("TECH_tools", "Startup", "toolbar") = "" Then

SaveSetting "TECH_tools", "Startup", "toolbar", "1"

Call AddToolbar

End If

Application.ScreenUpdating = True

End Sub

 

Private Sub Workbook_AddinUninstall()

Dim tempbar As CommandBars

On Error Resume Next

If Application.CommandBars(TECH_TOOLBAR_NAME).Name = TECH_TOOLBAR_NAME Then

End If

If Err.Number <> 0 Then

Err.Clear

SaveSetting "TECH_tools", "Startup", "toolbar", ""

End If

End Sub

 

Private Sub Workbook_Open()

Call Workbook_AddinInstall

End Sub

 

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Call Workbook_AddinUninstall

End Sub

------------------------------------------

benjaminwan

2007-6-17

發佈了67 篇原創文章 · 獲贊 37 · 訪問量 36萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章