文章編號: 238972 - 上次校閱: 2007年4月19日 - 版次: 8.2

使用 Visual C++ 來自動化 Office

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。

在此頁中

全部展開 | 全部摺疊

結論

您可以使用自動化來控制 Microsoft Office 從您的 Visual C++ 應用程式的元件。本文提供所需來自動化 Office,以及資源和範例程式碼的指標的基本資訊。

其他相關資訊

自動化 (之前稱為 OLE 自動化) 是一種技術,可讓您利用現有的程式功能,並將加入您自己的應用程式。比方說您還可以利用 Microsoft Word 的拼字和文法檢查功能到您的應用程式,而使 Microsoft Word 給您的使用者可以看得見。您甚至可以使用所有 Microsoft Excel 圖表]、 [列印],] 和 [資料分析工具。這項技術可以大幅簡化並加速您的開發。

自動化和 COM

自動化以元件物件模型 (COM)。COM 是標準的軟體架構根據介面,並設計用來分隔成獨立的物件的程式碼。為該物件的擴充它想像導向程式設計 (OOP) 開發架構但適用來區隔應用程式。 每個物件會公開一組介面,而一個物件初始設定、 通知,及資料傳輸的所有通訊都發生透過這些介面。

COM 也是一組服務所提供的動態連結程式庫 (DLL) 與作業系統一起安裝。自動化使用許多那些服務。一個範例是 Marshalling 」 服務會封裝的伺服器應用程式的介面成員函式用戶端應用程式呼叫,並將那些有其引數傳遞至伺服器的應用程式。 伺服器的介面會公開在用戶端的記憶體空間不符合上述情況,在用戶端就是在它自己的處理序空間中執行.exe 檔時。封送處理也取得傳回值從伺服器的方法回跨處理序界限和安全地用戶端呼叫落入。

有許多其他服務所提供的各種 COM 程式庫的自動化很重要。有關的那些資訊來源包括:
  • 在 OLE-第二版 」 內 Kraig Brockschmidt ISBN 由 1-55615-843-2
  • 內部 COM"Dale Rogerson-ISBN 由 1-57231-349-8
  • 自動化程式設計人員參考 》 的"ISBN 1-57231 584 9

三種方法可以使用 Visual C++ 的自動化

有三種基本方式,您可以使用自動化: MFC,# import 和 C/C + +:
  • 以 MFC,使用 Visual C++ ClassWizard 從 Microsoft Office 型別程式庫產生 「 包裝函式類別 」。這些類別,以及其他如 COleVariant、 COleSafeArray 及 COleException 的 MFC 類別簡化自動化的工作。通常透過他人,建議使用這個方法,大部分的 Microsoft 知識庫範例使用 MFC。
  • # import,變得可以使用 Visual 的 C + + 5.0 的新指示詞建立 VC + + 智慧型指標 」 從指定的型別程式庫。它是非常強大,但通常不建議使用,因為通常會發生與 Microsoft Office 搭配使用時的參考計數問題的應用程式。
  • C/C + + 自動化十分更困難,但有時需要避免負荷與 MFC 或 # import 的問題。基本上,您可以配合 CoCreateInstance(),作為這類 API,而且 COM 介面,例如 IDispatch 和 IUnknown。
請務必注意有從 C + + 相較於一般 C 因為周圍 C + + 類別的設計是 COM 自動化有些微差異。如更多有關 C 的自動化,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
181473? (http://support.microsoft.com/kb/181473/ ) 如何從一個 C 應用程式,而不是 C + + 中使用 OLE 自動化

如何使用 Office 型別程式庫

型別程式庫就像 C/C + + 標頭檔。它包含介面、 方法,以及發佈伺服器的屬性。您可以檢視與隨附 Visual C++ [OLE/COM 物件檢視器 (Oleview.exe) 型別程式庫。下列是 Microsoft Office 95、 Microsoft Office 97、 Microsoft Office 2000、 Microsoft Office XP、 Microsoft Office 2003 和 2007 Microsoft Office 的型別程式庫檔案名稱的清單。
摺疊此表格展開此表格
Office 應用程式型別程式庫
Word 95 和之前wb70en32.tlb
Excel 95 及前xl5en32.olb
PowerPoint 95 與之前PowerPoint.tlb
存取 95年與之前msaccess.tlb
繫結器 95binder.tlb
Schedule +sp7en32.olb
專案pj4en32.olb
小組管理員mstmgr1.olb
Word 97msword8.olb
Excel 97excel8.olb
PowerPoint 97msppt8.olb
存取 97msacc8.olb
繫結器 97msbdr8.olb
圖 97graph8.olb
Outlook 97msoutl8.olb
Outlook 98msoutl85.olb
Word 2000msword9.olb
Excel 2000excel9.olb
PowerPoint 2000msppt9.olb
存取 2000msacc9.olb
Outlook 2000msoutl9.olb
Word 2002msword.olb
Excel 2002excel.olb
PowerPoint 2002msppt.olb
Access 2002msacc.olb
Outlook 2002msoutl.olb
辦公室 Word 2003msword.olb
辦公室 Excel 2003excel.exe
辦公室 PowerPoint 2003msppt.olb
辦公室 Access 2003msacc.olb
辦公室 Outlook 2003msoutl.olb
辦公室 Word 2007msword.olb
辦公室 Excel 2007excel.exe
辦公室 PowerPoint 2007msppt.olb
辦公室 Access 2007msacc.olb
辦公室 Outlook 2007msoutl.olb
型別程式庫提供您需要使用物件、 方法和屬性的相關資訊。若要了解如何瀏覽物件模型的 Word、 Excel 和 Powerpoint 最好是在 Office 應用程式中使用巨集錄製器 」。

若要這樣在 2007 Office 程式中,請依照下列步驟執行:
  1. 顯示 [開發 o 人 h 員 ? 工 u 具 ?] 索引標籤。如果要執行這項操作,請按一下 [Microsoft Office 按鈕,按一下 [program 選項]、 按一下 常用、 按一下以選取 [在功能區顯示 [開發人員] 索引標籤]]]] 然後再按一下 [確定]
  2. 按一下 [開發 o 人 h 員 ? 工 u 具 ?] 索引標籤。
  3. 程式碼] 群組中按一下 [錄製巨集,],然後再執行您有興趣的工作]。
  4. 程式碼] 群組中按一下 [停止錄製]。
  5. 一旦完成錄製,按一下 [程式碼 群組中的 [巨集]、 按一下您所錄製的巨集,然後按一下 [編輯
如果要在 Office 2003 程式和較早版本的 Office 中,請執行這項作業,請依照下列步驟執行:
  1. 在 [工具] 功能表上指向 [巨集]、 按一下 [錄製新巨集,然後執行您有興趣的任務]。
  2. 在 [工具] 功能表上指向 [巨集,然後按一下 [停止錄製]。
  3. 一旦完成錄製,指向 [工具] 功能表上的 [巨集]、 按一下 [巨集]、 按一下您所錄製的巨集,然後按一下 編輯
這會帶您到產生的 VBA 程式碼,完成您所記錄的工作。請記住,錄製的巨集將 是最佳的可能程式碼在大多數情況下,但它提供快速且可使用的範例。

自動化是內嵌的 Office 元件

若要自動化內嵌的 Office 物件或應用程式,您需要取得物件的 IDispatch 指標。這已列在 [Visual C++ 技術筆記 39 (TN039)。您可以在 Microsoft Foundation 中找到此技術的附註的 Visual C++ 參考類別庫。如需逐步的範例,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中:
184663? (http://support.microsoft.com/kb/184663/ ) 如何內嵌和自動化與 MFC 的 Microsoft Excel 工作表

?考

David Kruglinski 」 內部 Visual C++"章節 24 (ISBN:1-57231-565-2) 提供一般的概觀,以及一些很棒的範例。而且,「 Microsoft 知識庫 」 是資訊的一個很好來源。

如需詳細資訊,請按一下下列的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
152023? (http://support.microsoft.com/kb/152023/ ) 尋找資源來研究自動化

這篇文章中的資訊適用於:
  • Microsoft Project 2000 Standard Edition
  • Microsoft Visual C++ 4.0 Standard Edition
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 6.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition
  • Microsoft Visual C++ 6.0 Professional Edition
  • Microsoft Visual C++, 32-bit Learning Edition 6.0
  • Microsoft Office Word 2007
  • Microsoft Office Word 2003
  • Microsoft Word 2002 Standard Edition
  • Microsoft Word 2000 Standard Edition
  • Microsoft Word 97 Standard Edition
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
  • Microsoft Access 2000 Standard Edition
  • Microsoft Access 97 Standard Edition
  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft Office Outlook 2007
  • Microsoft Office Outlook 2003
  • Microsoft Outlook 2002 Standard Edition
  • Microsoft Outlook 2000
  • Microsoft Outlook 97 Standard Edition
  • Microsoft Office PowerPoint 2007
  • Microsoft Office PowerPoint 2003
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft PowerPoint 2000 Standard Edition
  • Microsoft PowerPoint 97 Standard Edition
關鍵字:?
kbmt kbexpertiseinter kbfaq kbinfo KB238972 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:238972? (http://support.microsoft.com/kb/238972/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。