官方網站已經有提供相關的教學文件了,例如這篇:逐步解說:建立 PowerPoint 的第一個應用程式層級增益集。這裡就當作是個補充範例,示範如何寫一個 PowerPoint add-in 來將目前的投影片轉成 jpg 圖片。
下列步驟會建立一個 PowerPoint 2010 的增益集(.dll),它會在 PowerPoint 主選單的「增益集」選單底下增加一個選單項目,像這樣:
1. 建立專案
開啟 Visual Studio 2010,點主選單的 File > New > Project,然後:
在 Solution Explorer 中展開專案底下的 PowerPoint 項目,雙擊此項目底下的 ThisAddIn.cs。然後在此類別中加入以下程式碼(要先 using System.Windows.Forms 命名空間):
private Office.CommandBar menuBar; private Office.CommandBarPopup newMenuBar; private Office.CommandBarButton cvtToImgBtn; private void AddMenuBar() { try { menuBar = this.Application.CommandBars["Menu Bar"]; newMenuBar = (Office.CommandBarPopup)menuBar.Controls.Add( Office.MsoControlType.msoControlPopup, missing, missing, missing, true); if (newMenuBar != null) { newMenuBar.Caption = "我的增益集"; cvtToImgBtn= (Office.CommandBarButton)newMenuBar.Controls. Add(Office.MsoControlType.msoControlButton, missing, missing, 1, true); cvtToImgBtn.Style = Office.MsoButtonStyle. msoButtonIconAndCaption; cvtToImgBtn.Caption = "另存成圖片"; cvtToImgBtn.FaceId = 65; cvtToImgBtn.Tag = "ppt2img"; cvtToImgBtn.Click += new Office._CommandBarButtonEvents_ClickEventHandler( cvtToImgBtn_Click); newMenuBar.Visible = true; } } catch (Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); } } private void cvtToImgBtn_Click(Office.CommandBarButton ctrl, ref bool cancel) { if (this.Application.ActivePresentation == null || String.IsNullOrEmpty(this.Application.ActivePresentation.FullName)) { MessageBox.Show("請先開啟文件。", "訊息", MessageBoxButtons.OK); return; } string filename = this.Application.ActivePresentation.FullName; for (int i = 0; i < Application.ActivePresentation.Slides.Count; i++) { string outFileName = @"C:\" + Path.GetFileName(filename) + String.Format(".{0:00}.jpg", i+1);
// 第一張投影片的索引值是 1,不是 0。 Application.ActivePresentation.Slides[i+1].Export(outFileName, "jpg", 0, 0); } }
然後找到此類別的 ThisAddIn_Startup 事件處理常式,在裡面呼叫剛才寫好的 AddMenuBar 方法:
private void ThisAddIn_Startup(object sender, System.EventArgs e) { AddMenuBar(); }
3. 測試
Build 專案。建置完成後,若沒有錯誤,隨便開啟一個 PowerPoint 文件,應該就可以看到主選單的「增益集」裡面多出我們自訂的增益集項目:
點擊「另存成圖片」,就會將目前的投影片檔案中的每一張投影片個別存成 .jpg 的圖檔。存放的位置是 C:\。
一點筆記
寫程式控制 Microsoft Office 並不難,就跟使用其他現成元件一樣,只要找到正確的「入口」,了解其物件模型與關鍵的屬性、事件,剩下的就容易多了。問題就是這個元件還挺大的,有時只為了一個小問題,卻得參考好多文件,東試西試,才能找到那個解問題的關鍵屬性。
以前在使用 Office OLE Automation 時,最常用的伎倆就是先利用 Office 應用程式的錄製巨集功能,把想要的操作錄下來變成指令碼,再從中學習和改寫。
可是,PowerPoint 2010 卻沒有錄製巨集的功能...Orz
你可以從 PowerPoint 選項中找到「開發人員」的選項,並將它開啟(預設是關閉的),如下圖:
這樣雖然可以令主選單出現「開發人員」項目,可是它並不像 Word 那樣有錄製巨集的功能。
無法故技重施,似乎就只好多花點時間 K 官方文件,或者到網路上爬文了。
最後一點要記的是,如果要將自己寫的增益集打包成安裝程式,要記得在 Setup 專案中設定欲登錄的 registry key。請參考官方文件:應用程式層級增益集的登錄項目,然後對照底下兩張圖,應該就挺清楚了。
這最後一張圖所顯示的,就是在 Visual Studio 中製作 Setup 專案時的 Registry Editor 畫面。
延伸閱讀
- Office 方案開發概觀
- PowerPoint Developer Center
- 逐步解說:建立 PowerPoint 的第一個應用程式層級增益集
- Deploying a Visual Studio 2010 Tools for Office Solution Using Windows Installer
- 應用程式層級增益集的登錄項目
- TARGETDIR 屬性 from Windows Installer Guide
- Automating the Deployment of Outlook Add-ins by Using Visual Studio Tools for Office Second Edition (for Office 2007)
沒有留言: