本文承接《Office 2000 內部 COM 增益集編程實現》與《Word 2000/XP 內部 COM 增益集編程實現》,採相同筆法,僅針對 Excel 與 PowerPoint 的差異點說明,配合前兩文可完整掌握 Office 全家桶增益集開發。範例執行效果如下:


Excel 2000:
#import "E:\\Program Files\\Microsoft Office\\Office\\mso9.dll" rename_namespace("Office")
using namespace Office;
#import "D:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA6\\VBE6EXT.olb" rename_namespace("VBE6")
using namespace VBE6;
// Excel 類型庫
#import "E:\\Program Files\\Microsoft Office\\Office\\EXCEL9.olb" \
rename("RGB", "RGBEx"), rename("DialogBox", "DialogBoxEx"), \
named_guids, rename_namespace("MSExcel")
using namespace MSExcel;
PowerPoint 2000:
#import "E:\\Program Files\\Microsoft Office\\Office\\mso9.dll" rename_namespace("Office")
using namespace Office;
#import "D:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA6\\VBE6EXT.olb" rename_namespace("VBE6")
using namespace VBE6;
// PowerPoint 類型庫
#import "E:\\Program Files\\Microsoft Office\\Office\\MSPPT9.OLB" named_guids, rename_namespace("MSPPT")
using namespace MSPPT;
Excel 2000:
HKCU
{
Software { Microsoft { Office { Excel { Addins {
'ExcelAddin.Excel2000Addin' {
val FriendlyName = s 'Excel2000 Addin'
val Description = s 'Excel2000增益集'
val LoadBehavior = d '00000003'
val CommandLineSafe = d '00000001'
}
} } } } } }
PowerPoint 2000:
HKCU
{
Software { Microsoft { Office { PowerPoint { Addins {
'PPTAddin.PowerPoint2000Addin' {
val FriendlyName = s 'PowerPoint2000 Addin'
val Description = s 'PowerPoint2000增益集'
val LoadBehavior = d '00000003'
val CommandLineSafe = d '00000001'
}
} } } } } }
Excel/PowerPoint 沒有 ActiveExplorer,直接從 _Application 取得 CommandBars:
Excel 2000:
CComQIPtr<MSExcel::_Application> spApp(Application);
HRESULT hr = spApp->get_CommandBars(&spCmdBars);
PowerPoint 2000:
CComQIPtr<MSPPT::_Application> spApp(Application);
HRESULT hr = spApp->get_CommandBars(&spCmdBars);
其餘工具列/按鈕/選單建立、事件處理邏輯與 Outlook/Word 版完全一致,請參考前兩文完整程式碼。
本文配套 Excel 與 PowerPoint 兩套完整範例原始碼可供下載。