INFO:使用 Visual C++ 使 Office 自動化
| 文章編號 |
: |
238972 |
| 最后修改 |
: |
2006年3月30日 |
| 修訂 |
: |
6.1 |
概要
您可以使用自動化功能從 Visual C++ 應(yīng)用程序中控制 Microsoft Office 組件。本文提供使 Office 自動運行所需的基本信息以及指向相關(guān)資源和示例代碼的指針。
更多信息
自動化(以前稱為 OLE 自動化)是一種技術(shù),該技術(shù)允許您利用現(xiàn)有程序的功能并將其合并到您自己的應(yīng)用程序中。例如,您可以在應(yīng)用程序中使用
Microsoft Word 的拼寫和語法檢查功能,而不讓用戶看到 Microsoft Word。您甚至可以使用 Microsoft
Excel 的所有圖表、打印和數(shù)據(jù)分析工具。該技術(shù)可以大大簡化和加快您的開發(fā)。
自動化和 COM
自動化建立在組件對象模型 (COM) 的基礎(chǔ)上。COM 是一種基于接口的標準軟件結(jié)構(gòu),旨在將代碼分離為獨立的對象。可以將它看作是面向?qū)ο缶幊?
(OOP)
范例的擴展,但是它也適用于單獨的應(yīng)用程序。每個對象都公開一組接口,到對象的所有通信(如初始化、通知和數(shù)據(jù)傳輸)都是通過這些接口進行的。
COM 還是隨操作系統(tǒng)一起安裝的動態(tài)鏈接庫 (DLL)
所提供的一組服務(wù)。自動化會用到其中的許多服務(wù)。其中一個示例就是“封送處理”服務(wù),該服務(wù)將客戶端應(yīng)用程序的調(diào)用打包到服務(wù)器應(yīng)用程序接口的成員函數(shù)
中,然后將這些函數(shù)及其參數(shù)傳遞給服務(wù)器應(yīng)用程序。服務(wù)器的接口可能會在客戶端的內(nèi)存空間中公開,但是,如果客戶端是 .exe
文件,而且在自己的進程空間運行,則不會出現(xiàn)這種情況。封送處理還可以跨越進程邊界從服務(wù)器的方法中獲取返回值,并將這些值安全地傳遞給客戶端調(diào)用。
各種 COM 庫提供了對自動化非常重要的許多其他服務(wù)。關(guān)于這些服務(wù)的信息來源包括:
| ? | “Inside OLE - Second Edition”,Kraig Brockschmidt 著,ISBN 1-55615-843-2 |
| ? | “Inside COM”,Dale Rogerson 著,ISBN 1-57231-349-8 |
| ? | “Automation Programmer's Reference”,ISBN 1-57231-584-9 |
從 Visual C++ 使用自動化的三種方法
可通過以下三種基本方法來使用自動化:MFC、#import 和 C/C++:
| ? | 借
助于 MFC,您可以使用 Visual C++ ClassWizard 從 Microsoft Office
類型庫生成“包裝類”。這些類以及諸如 COleVariant、COleSafeArray 和 COleException 之類的其他 MFC
類可簡化自動化任務(wù)。此方法優(yōu)于其他方法,通常建議使用該方法,并且大部分 Microsoft 知識庫示例都使用 MFC。 |
| ? | #import 是 Visual C++ 5.0 中引入的一個新指令,它可以從指定的類型庫創(chuàng)建 VC++“智能指針”。它的功能非常強大,但通常不建議使用它,因為它與 Microsoft Office 應(yīng)用程序一起使用時,經(jīng)常會出現(xiàn)引用計數(shù)問題。 |
| ? | C/C++
自動化要困難得多,但有時為了避免由于使用 MFC 時所造成的開銷或避免使用 #import 時所出現(xiàn)的問題,需要使用該方法。基本上,您會用到
CoCreateInstance() 這樣的 API 以及諸如 IDispatch 和 IUnknown 之類的 COM 接口。 |
必須注意,C++ 中的自動化與普通的 C 中的自動化稍有不同,因為 COM 是圍繞 C++ 類設(shè)計的。
有關(guān)使用 C 進行自動化的其他信息,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應(yīng)的文章:
181473 (http://support.microsoft.com/kb/181473/)
如何在 C 應(yīng)用程序中而不是在 C++ 中使用 OLE 自動化
如何使用 Office 類型庫
類型庫與 C/C++ 頭文件類似。它包含服務(wù)器發(fā)布的接口、方法和屬性。您可以使用 Visual C++ 附帶的 OLE/COM 對象查看器
(Oleview.exe) 來查看類型庫。下面列出了 Microsoft Office 95、Microsoft Office
97、Microsoft Office 2000 和 Microsoft Office XP 的類型庫文件名:
| Office 應(yīng)用程序 | 類型庫 |
|---|
| Word 95 及更低版本 | wb70en32.tlb |
| Excel 95 及更低版本 | xl5en32.olb |
| PowerPoint 95 及更低版本 | PowerPoint.tlb |
| Access 95 及更低版本 | msaccess.tlb |
| Binder 95 | binder.tlb |
| Schedule+ | sp7en32.olb |