在Excel中建立自訂功能表項目

來源:互聯網
上載者:User
excel|菜單 演練:在Excel中建立自訂功能表項目



Brian A. Randell

MCW Technologies, LLC

September 2003

Applies to:

Microsoft® Visual Studio® Tools for the Microsoft Office System

Microsoft Office Excel 2003

Microsoft Visual Studio .NET 2003

概述:Office CommandBar對象提供了增加功能表項目和工具條按鈕代碼的途徑。在這篇演練中,你將建立自訂功能表項目下的菜單條,並且增加代碼來響應Office菜單。

內容:

介紹

建立菜單和工具條項目是微軟Office的一個核心特點,雖然這次實驗是示範在微軟Office Excel 2003中使用這些項目,但是這些操作在Office Word中是類似的。(不同之處在於在Word中菜單名是Menu Bar,而在Excel中叫Worksheet Menu Bar。)你將在Excel主菜單中建立功能表項目。然後,你增加此功能表項目。最後,你增加Click事件代碼來執行自訂代碼。

提示:Office菜單和工具條的對象模組定義在Office.dll中,當你給微軟Office System項目建立了一個新的Visual Studio Tools時,微軟Visual Studio® .NET自動包含到此模組的引用。

先決條件

要完成此演練,下列軟體和組件必須安裝:

• Microsoft Visual Studio .NET 2003 or Microsoft Visual Basic® .NET Standard 2003

• Microsoft Visual Studio Tools for the Microsoft Office System

• Microsoft Office Professional Edition 2003

提示:假如你是Visual Basic .Net編程者,你需要設定Option Strict為On(或者你在每一個模組中增加Option Strict聲明)。雖然這不是必須的,但是這可以保證你不會執行不安全的類型轉換。在以後的時間裡,利用此選項的好處將遠遠大於增加代碼的困難。

開始

你將通過建立一個新的Visual Studio .NET的Excel項目來開始。

建立項目

使用微軟Office System的Visual Studio Tool建立一個新的Excel活頁簿項目(在Visual Basic .NET或是C#中)。

建立一個Excel活頁簿項目

1. 開始Visual Studio .NET,在檔案菜單上,指向建立,點擊項目。

2. 在項目類型面板上,擴充微軟Office System項目,接著選擇Visual Basic 項目或Visual c#項目。

3. 在模板面板中選擇Excel活頁簿。

4. 起名為ExcelCommandBars,接著儲存在當地硬碟。

5. 在微軟Office項目嚮導中接受預設值,點擊完成。

Visual Studio .NET為你在代碼編輯器中開啟ThisWorkbook.vb或是ThisWorkboo.cs檔案。

建立功能表列項目

在Excel主菜單條上建立一個功能表列項目需要你使用Add方法增加一個CommandBarControl。

在Excel中建立功能表列項目

1. 在已存變數ThisApplication和ThisWorkbook下面增加下列變數:

' Visual Basic

Private MainMenuBar As Office.CommandBar

Private MenuBarItem As Office.CommandBarControl

Private WithEvents MenuItem As Office.CommandBarButton // C#

private Office.CommandBar MainMenuBar = null;

private Office.CommandBarControl MenuBarItem = null; private Office.CommandBarButton MenuItem = null;

2. 在OfficeCodeBehing類中增加下列程式(通過項目模板建立),這段程式初始化了先前聲明的MainMenuBar和MenuItemBar對象。

' Visual Basic Private

Sub InitMenuBarItems(ByVal Caption As String)

Try MainMenuBar = ThisApplication.CommandBars( _ "Worksheet Menu Bar")

MenuBarItem = MainMenuBar.Controls.Add( _ Office.MsoControlType.msoControlPopup, Temporary:=True) MenuBarItem.Caption = Caption Catch ex As Exception MessageBox.Show(ex.Message, _

ex.Source, MessageBoxButtons.OK, MessageBoxIcon.Error)

End Try

End Sub

// C#

private void InitMenuBarItems(string Caption)

{ try { MainMenuBar = ThisApplication.CommandBars["Worksheet Menu Bar"]; MenuBarItem = MainMenuBar.Controls.Add( Office.MsoControlType.msoControlPopup, Type.Missing, Type.Missing, Type.Missing, true); MenuBarItem.Caption = Caption; }

catch (Exception ex) { MessageBox.Show(ex.Message, ex.Source, MessageBoxButtons.OK, MessageBoxIcon.Error); } }

3. 增加下列代碼到已存在的ThisWorkbook_Open程式,這段代碼調用你剛才建立的InitMenuBarItems程式。

' Visual Basic

InitMenuBarItems("&Custom Code")

// C#

InitMenuBarItems("&Custom Code");

4. 選擇檔案菜單上的儲存所有檔案來儲存整個方案。

5. 按F5運行項目,裝入Excel和你的活頁簿。

6. 在Excel中,查看功能表列項目標籤寫著Custom Code的菜單顯示在協助菜單右邊。如圖一所示:


圖一:有著自訂功能表列項目的Excel

建立功能表項目

有了合適的自訂功能表列,你就可以加入新的菜單中了。功能表項目表示為CommandBarControl對象,你將使用先前建立的功能表列項目Controls集合的Add方法來建立一個新的CommandBarControl執行個體。

建立功能表項目

1. 增加下列程式到OfficeCodeBehind類中,這段程式建立了CommandBarControl並且設定其標題:

' Visual Basic

Private Function CreateButton( _

ByVal Parent As Office.CommandBarPopup, _

ByVal Caption As String) As Office.CommandBarButton

Try

Dim cbc As Office.CommandBarControl

cbc = Parent.Controls.Add( _ Office.MsoControlType.msoControlButton, Temporary:=True)

cbc.Caption = Caption

cbc.Visible = True

Return DirectCast(cbc, Office.CommandBarButton)

Catch ex As Exception

MessageBox.Show(ex.Message, _

ex.Source, MessageBoxButtons.OK, MessageBoxIcon.Error) End Try

End Function

// C#

private Office.CommandBarButton CreateButton( Office.CommandBarPopup Parent, string Caption)

{ Office.CommandBarControl cbc = null;

try { cbc = Parent.Controls.Add( Office.MsoControlType.msoControlButton, Type.Missing, Type.Missing, Type.Missing, true); cbc.Caption = Caption; cbc.Visible = true; }

catch (Exception ex)

{ MessageBox.Show(ex.Message, ex.Source, MessageBoxButtons.OK, MessageBoxIcon.Error); }

return (Office.CommandBarButton) cbc; }

2. 增加下列代碼到ThisWorkbook_Open程式中,下列代碼調用了InitMenuBarItems程式:

' Visual Basic

MenuItem = CreateButton( _

DirectCast(MenuBarItem, Office.CommandBarPopup), _ "Run Demo Code")

// C#

MenuItem = CreateButton( (Office.CommandBarPopup)MenuBarItem, "Run Demo Code");

3. 選擇檔案菜單上的儲存所有檔案來儲存整個方案。

4. 按F5運行此項目,裝入Excel和你的活頁簿。

5. 在Excel中點擊自訂的頂級菜單,查看Run Demo Code功能表項目。如下圖二所示:


圖二:增加了一個功能表項目之後



攔截功能表項目的點擊事件

為了完成本次演練,你需要增加一個事件來處理自訂功能表項目被點擊之後的響應。

(只用在Visual Basic)

攔截功能表項目點擊事件

在Visual Basic .NET中完成下列步驟增加功能表項目被點擊的事件處理常式。

為自訂功能表項目增加事件處理(Visual Basic)

1. 在代碼編輯器的左上方的Class Name下拉式清單中選擇MenuItem。

2. 在代碼編輯器的右上方的Method Name下拉式清單中選擇Click。

3. 修改MenuItem_Click程式,增加下列代碼:

' Visual Basic

MessageBox.Show(String.Format( _

"You just clicked the button labeled '{0}'.{1}" & _

"The name of your workbook is '{2}'.", _

Ctrl.Caption, Environment.NewLine, ThisWorkbook.Name), _ "MenuItem_Click", MessageBoxButtons.OK, _ MessageBoxIcon.Information)

4. 選擇檔案菜單中的儲存所有檔案來儲存整個解決方案。

5. 按F5運行這個項目,裝入Excel和你的活頁簿。

6. 在Excel中,點擊Custom Code菜單,接著選擇Run Demo Code。

一個警告框出現,顯示當前活頁簿。

(C#)攔截點擊功能表項目事件

在Visual C#中完成下列步驟來增加點擊自訂功能表列項目的事件處理。

為自訂功能表項目增加事件處理(C#)

1. 增加下列程式到OfficeCodeBehind類中:

// C# private

void MenuItem_Click( Office.CommandBarButton Ctrl, ref Boolean CancelDefault) { MessageBox.Show(String.Format( "You just clicked the button labeled '{0}'.\n" + "The name of your workbook is '{1}'.", Ctrl.Caption, ThisWorkbook.Name), "MenuItem_Click", MessageBoxButtons.OK, MessageBoxIcon.Information); }

2. 修改ThisWorkbook_Open程式,增加下列代碼:

// C#

MenuItem.Click += new Microsoft.Office.Core. _

CommandBarButtonEvents_ClickEventHandler(MenuItem_Click);

提示:如果你輸入完代碼的第一行(直到+=),Visual Studio .NET將提示你按TAB鍵。代碼編輯器將為你插入此行的剩餘代碼。這個自動完成的新特點使你更容易的完成事件處理常式。

測試本應用

現在你可以測試自己建立的自訂功能表項目了。

測試本應用

1. 選擇檔案菜單的儲存所有檔案來儲存整個項目。

2. 按F5運行這個項目,裝入Excel和你的活頁簿。

3. 在警告框中出現對你當前活頁簿的描述。

結論

微軟Office應用的一個核心特點是建立菜單和工具列的能力。Office CommandBar對象提供了一種方法來自訂菜單和工具列。雖然本次演練示範了你怎樣增加代碼來響應Excel菜單的點擊,你將會發現在Word中的行為與此類似。




相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。