本文詳細示範如何使用 MFC 專案,透過匯入 Microsoft Office 應用程式(以 Excel 為例)的類型庫,建立自動化用戶端,控制 Excel 啟動、顯示與基本操作。
AutoProject。IDD_AUTOPROJECT_DIALOG,刪除靜態文字與 Cancel 按鈕,將 OK 按鈕 ID 改為 IDRUN,標題改為 Run。IDRUN → 訊息 BN_CLICKED → Add Function 命名 OnRun。Excel8.olb (Office\Office)Excel9.olbExcel.exe (Office10/Office11)Excel8.h/.cpp)。CAutoProjectApp::InitInstance() 最前加入:if (!AfxOleInit()) {
AfxMessageBox(_T("無法初始化 COM 程式庫"));
return FALSE;
}AutoProject.cpp 頂部 #include <afxdisp.h>;AutoProjectDlg.cpp 在 stdafx.h 後 #include "excel8.h"(版本對應修改)。void CAutoProjectDlg::OnRun()
{
_Application app; // Excel Application 物件
if (!app.CreateDispatch(_T("Excel.Application"))) {
AfxMessageBox(_T("無法啟動 Excel"));
return;
}
app.SetVisible(TRUE);
AfxMessageBox(_T("Excel 正在執行!"));
// app 离开作用域時,Excel 會自動退出
}| 應用程式 | 類型庫檔案 | 預設路徑 |
|---|---|---|
| Excel 97 | Excel8.olb | Office\Office |
| Excel 2000 | Excel9.olb | Office\Office |
| Excel 2002/2003 | Excel.exe | Office10/Office11 |
| Word 97 | Msword8.olb | Office\Office |
| Word 2000 | Msword9.olb | Office\Office |
| Word 2002/2003 | MSWord.olb / WinWord.exe | Office10/Office11 |
| PowerPoint 97 | Msppt8.olb | Office\Office |
| Access 2000 | Msacc9.olb | Office\Office |
完整對照表見原文,含 DAO、Graph、Binder、Outlook、Office 共用庫 (MSO.dll) 等。
Excel8.cpp 定義。GetApplication)可能存在於多個類別中,需確認正確者。COleDispatchDriver,自動管理 IDispatch 參考計數。掌握此流程後,即可套用至 Word、PowerPoint、Access 等所有支援 COM 自動化的 Office 組件。只需更換類型庫、調整 ProgID(如 Word.Application)、呼叫對應物件模型方法即可。