使用VC編程來(lái)操縱Office。你可以實(shí)現(xiàn)諸如:Word文件打印、傳送數(shù)據(jù)到Word文檔、發(fā)送E-MAIL、自動(dòng)產(chǎn)生表格、Excel數(shù)據(jù)統(tǒng)計(jì)、圓餅圖,直方圖顯示、自動(dòng)報(bào)表生成、播放幻燈、doc,txt,HTML,rtf文件轉(zhuǎn)換、中文簡(jiǎn)繁體轉(zhuǎn)換、拼音或筆畫排序......只要是Office能夠?qū)崿F(xiàn)的功能,都可以在你寫的程序中調(diào)用。仔細(xì)閱讀下面的說(shuō)明,并下載源文件進(jìn)行參考,你就可以一步一步地掌握這個(gè)技術(shù)。祝朋友們學(xué)習(xí)快樂(lè)。
一、概念
Microsoft 的 Office 產(chǎn)品中,都提供了OLE Automation 自動(dòng)化程序的接口。如果你使用VB,VBA 和 Script 腳本調(diào)用 Office 功能的話,其實(shí)比使用 VC 調(diào)用要簡(jiǎn)單的多。比如在 WORD 中,調(diào)出菜單“工具(T)宏(M)錄制新宏(R)”,這時(shí)候它開(kāi)始記錄你在 WORD 中任何菜單和鍵盤的操作,把你的操作過(guò)程保存起來(lái),以便再次重復(fù)調(diào)用。而保存這些操作的記錄,其實(shí)就是使用了 VBA 程序(Visual Basic for Application)。而我們下面要實(shí)現(xiàn)的功能,也同樣要參考 VBA 的方法。
二、結(jié)構(gòu)層次
為了更有邏輯,更有層次地操作 Office,Microsoft 把應(yīng)用(Application)按邏輯功能劃分為如下的樹(shù)形結(jié)構(gòu)
Application(WORD 為例,只列出一部分)
Documents(所有的文檔)
Document(一個(gè)文檔)
......
Templates(所有模板)
Template(一個(gè)模板)
......
Windows(所有窗口)
Window
Selection
View
Selection(編輯對(duì)象)
Font
Style
Range
......
......
只有了解了邏輯層次,我們才能正確的操縱 Office。舉例來(lái)講,如果給出一個(gè)VBScript語(yǔ)句是:
application.ActiveDocument.SaveAs "c:abc.doc"
那么,我們就知道了,這個(gè)操作的過(guò)程是:第一步,取得Application;第二步,從Application中取得ActiveDocument;第三步,調(diào)用 Document 的函數(shù) SaveAs,參數(shù)是一個(gè)字符串型的文件名。
三、基本步驟
(1)創(chuàng)建(或打開(kāi)已有的)一個(gè) MFC 的程序工程
(2)Ctrl+W 執(zhí)行 ClassWizard(本文按照 VC6 操作,例子程序也是在VC6 下編寫測(cè)試的)
(3)Add Class...From a type Library... 在 Office 目錄中,找到你想使用的類型庫(kù)。(我使用的是 Office2000,其Word 的類型庫(kù)文件,保存在 C:Program FilesMicrosoft OfficeOfficeMSWORD9.OLB)根據(jù)你 Office 的版本,可以使用下表列出的類型庫(kù)文件
| Office 版本和類型 | 類型庫(kù)文件 | Office 版本和類型 | 類型庫(kù)文件 |
| Access 97 | Msacc8.olb | PowerPoint 2000 | Msppt9.olb |
| Jet Database 3.5 | DAO350.dll | Word 2000 | Msword9.olb |
| Binder 97 | Msbdr8.olb | Access 2002 | Msacc.olb |
| Excel 97 | Excel8.olb | Excel 2002 | Excel.exe |
| Graph 97 | Graph8.olb | Graph 2002 | Graph.exe |
| Office 97 | Mso97.dll | Office 2002 | MSO.dll |
| Outlook 97 | Msoutl97.olb | Outlook 2002 | MSOutl.olb |
| PowerPoint 97 | Msppt8.olb | PowerPoint 2002 | MSPpt.olb |
| Word 97 | Msword8.olb | Word 2002 | MSWord.olb |
| Access 2000 | Msacc9.olb | Office Access 2003 | Msacc.olb |
| Jet Database 3.51 | DAO360.dll | Office Excel 2003 | Excel.exe |
| Binder 2000 | Msbdr9.olb | Graph 2003 | Graph.exe |
| Excel 2000 | Excel9.olb | Office 2003 | MSO.dll |
| Graph 2000 | Graph9.olb | Office Outlook 2003 | MSOutl.olb |
| Office 2000 | Mso9.dll | Office PowerPoint 2003 | MSPpt.olb |
| Outlook 2000 | Msoutl9.olb | Office Word 2003 | MSWord.olb |
(4)選擇類型庫(kù)文件后,在彈出的對(duì)話窗中繼續(xù)選擇要添加的類。具體選擇什么類,要看你將來(lái)在程序中打算調(diào)用什么功能。當(dāng)然,你也可以不用考慮這么多,用鼠標(biāo)和Shift鍵配合,全部選擇也可以。
(5)初始化COM。方法一,找到App的InitInstance()函數(shù),在其中添加 AfxOleInit()函數(shù)的調(diào)用;方法二,在需要調(diào)用COM功能的地方 CoInitialize(NULL),調(diào)用完畢后 CoUninitialize()。
(6)在你需要調(diào)用 Office 功能函數(shù)的 cpp 文件中
#include // 為了方便操作 VARIANT 類型變量,使用CComVariant 模板類
#include "頭文件.h"
// 具體的頭文件名,是由裝載類型庫(kù)的文件名決定的。(鼠標(biāo)雙點(diǎn)包裝類的文件,就可以看到)
// 比如使用 msword9.olb類型庫(kù),那么頭文件是 msword9.h
(7)好了,現(xiàn)在開(kāi)始寫程序吧。另外要說(shuō)明的是,步驟3和4,其實(shí)也可以使用 #import 方式引入類型庫(kù)。
新聞熱點(diǎn)
疑難解答
圖片精選