青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

用Visual C++操縱MS Word

使用VC編程來操縱Office。你可以實(shí)現(xiàn)諸如:Word文件打印、傳送數(shù)據(jù)到Word文檔、發(fā)送E-MAIL、自動產(chǎn)生表格、Excel數(shù)據(jù)統(tǒng)計(jì)、圓餅圖,直方圖顯示、自動報(bào)表生成、播放幻燈、doc,txt,HTML,rtf文件轉(zhuǎn)換、中文簡繁體轉(zhuǎn)換、拼音或筆畫排序......只要是Office能夠?qū)崿F(xiàn)的功能,都可以在你寫的程序中調(diào)用。仔細(xì)閱讀下面的說明,并下載源文件進(jìn)行參考,你就可以一步一步地掌握這個(gè)技術(shù)。祝朋友們學(xué)習(xí)快樂。

  一、概念

  Microsoft 的 Office 產(chǎn)品中,都提供了OLE Automation 自動化程序的接口。如果你使用VB,VBA 和 Script 腳本調(diào)用 Office 功能的話,其實(shí)比使用 VC 調(diào)用要簡單的多。比如在 WORD 中,調(diào)出菜單“工具(T)\宏(M)\錄制新宏(R)”,這時(shí)候它開始記錄你在 WORD 中任何菜單和鍵盤的操作,把你的操作過程保存起來,以便再次重復(fù)調(diào)用。而保存這些操作的記錄,其實(shí)就是使用了 VBA 程序(Visual Basic for Application)。而我們下面要實(shí)現(xiàn)的功能,也同樣要參考 VBA 的方法。

  二、結(jié)構(gòu)層次

  為了更有邏輯,更有層次地操作 Office,Microsoft 把應(yīng)用(Application)按邏輯功能劃分為如下的樹形結(jié)構(gòu)

Application(WORD 為例,只列出一部分)
Documents(所有的文檔)
Document(一個(gè)文檔)
......
  Templates(所有模板)
Template(一個(gè)模板)
......
  Windows(所有窗口)
Window
Selection
View
Selection(編輯對象)
Font
Style
Range
......
......

  只有了解了邏輯層次,我們才能正確的操縱 Office。舉例來講,如果給出一個(gè)VBScript語句是:
application.ActiveDocument.SaveAs "c:\abc.doc"

  那么,我們就知道了,這個(gè)操作的過程是:第一步,取得Application;第二步,從Application中取得ActiveDocument;第三步,調(diào)用 Document 的函數(shù) SaveAs,參數(shù)是一個(gè)字符串型的文件名。
三、基本步驟

  (1)創(chuàng)建(或打開已有的)一個(gè) MFC 的程序工程

  (2)Ctrl+W 執(zhí)行 ClassWizard(本文按照 VC6 操作,例子程序也是在VC6 下編寫測試的)

  (3)Add Class...\From a type Library... 在 Office 目錄中,找到你想使用的類型庫。(我使用的是 Office2000,其Word 的類型庫文件,保存在 C:\Program Files\Microsoft Office\Office\MSWORD9.OLB)根據(jù)你 Office 的版本,可以使用下表列出的類型庫文件

Office 版本和類型 類型庫文件 Office 版本和類型 類型庫文件
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)選擇類型庫文件后,在彈出的對話窗中繼續(xù)選擇要添加的類。具體選擇什么類,要看你將來在程序中打算調(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 <atlbase.h> // 為了方便操作 VARIANT 類型變量,使用 CComVariant 模板類
#include "頭文件.h"
// 具體的頭文件名,是由裝載類型庫的文件名決定的。(鼠標(biāo)雙點(diǎn)包裝類的文件,就可以看到)
// 比如使用 msword9.olb類型庫,那么頭文件是 msword9.h

  (7)好了,現(xiàn)在開始寫程序吧。另外要說明的是,步驟3和4,其實(shí)也可以使用 #import 方式引入類型庫。

  四、實(shí)現(xiàn)技巧

  在書寫調(diào)用 Office 函數(shù)的過程中,最困難的是確定函數(shù)的參數(shù),一般情況下,參數(shù)都是 VARIANT 類型的變量指針。那么到底具體我們應(yīng)該怎么寫那?推薦兩個(gè)方法,其一是閱讀有關(guān) VBA 的書籍;其二,是使用 Office 中自帶的“宏”功能。強(qiáng)烈推薦大家使用第二個(gè)方法,把你要完成的功能,在 Office 的操作環(huán)境中,用宏錄制下來,然后觀察分析錄制后的函數(shù)和參數(shù),就可以在 VC 中使用了。舉一個(gè)例子:

ActiveDocument.SaveAs FileName:="Hello.doc", FileFormat:=wdFormatDocument _
, LockComments:=False, Password:="", AddToRecentFiles:=True, _
WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
False

  以上是在 Word 中錄制的一個(gè)保存文件的宏,而在 VC 中對應(yīng)的函數(shù)原型為 void _Document::SaveAs(VARIANT* FileName, VARIANT* FileFormat, VARIANT* LockComments,
VARIANT* Password, VARIANT* AddToRecentFiles, VARIANT* WritePassword,
VARIANT* ReadOnlyRecommended, VARIANT* EmbedTrueTypeFonts, VARIANT* SaveNativePictureFormat,
VARIANT* SaveFormsData, VARIANT* SaveAsAOCELetter)

  分析對照后,我們就能看出,參數(shù) FileName 是字符串 VARIANT(VT_BSTR),參數(shù) LockComments 是布爾VARIANT(VT_BOOL),等等。參數(shù) FileFormat := wdFormatDocument 是什么類型那?其實(shí)這是一個(gè)表示保存的時(shí)候指定文件類型的常量,而且顯然是 DWORD 類型VARIANT(VT_I4)。那么常量的數(shù)值又是多少那?很簡單,寫一個(gè)宏,調(diào)用函數(shù) MsgBox 顯示一下不就都知道啦?!

  五、步步為營

  特別提示一:編譯執(zhí)行前,一定要先關(guān)閉 KV 實(shí)時(shí)監(jiān)視病毒的功能(KV 的程序會干擾我們的調(diào)用,瑞星的則沒關(guān)系)。

   特別提示二:在例子程序中,為了表現(xiàn)程序的關(guān)鍵部分,沒有或很少使用了條件判斷。為了實(shí)現(xiàn)你程序的健壯性,請自己加上條件判斷和異常處理。

  Step1:如何啟動和關(guān)閉 WORD,及 VARIANT 的最基本的使用方法
  Step2:和 Step1 同樣功能,用 CComVariant 改進(jìn)了 VARIANT 的使用方式
  Step3:在 Step2 的基礎(chǔ)上,新建一個(gè) WORD 文檔,并從程序中傳送一些字符到 WORD
  Step4:在 Step3 的基礎(chǔ)上,保存 WORD 文檔
  Step5:一個(gè)小應(yīng)用舉例,把輸入的漢字按照“筆畫”排序
  Step6:一個(gè)小應(yīng)用舉例,盜竊正在使用的 WORD 文檔

  以上這6個(gè)小程序中,都有詳細(xì)的注釋。大家閱讀后慢慢體會并實(shí)驗(yàn),你就可以自由地操縱任何一個(gè) Office 啦。

  源代碼下載

posted on 2009-05-21 21:14 wrh 閱讀(334) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


導(dǎo)航

<2008年4月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

統(tǒng)計(jì)

常用鏈接

留言簿(19)

隨筆檔案

文章檔案

收藏夾

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久九九久久九九| 欧美激情二区三区| 亚洲黄色片网站| 亚洲国产成人av好男人在线观看| 国产欧美一区二区三区久久| 国产欧美精品在线播放| 国产一区二区中文| ●精品国产综合乱码久久久久| 伊人成人开心激情综合网| 影院欧美亚洲| 艳女tv在线观看国产一区| 亚洲一区二区免费在线| 欧美一级视频一区二区| 免费在线亚洲欧美| 夜夜嗨网站十八久久| 亚洲欧美中文字幕| 欧美二区视频| 国产麻豆精品theporn| 久久九九精品| 欧美亚洲免费高清在线观看| 久久精品亚洲乱码伦伦中文| 久久一区亚洲| 99国产精品久久久| 久久九九国产| 国产精品激情电影| 亚洲国产精品女人久久久| 在线中文字幕日韩| 卡一卡二国产精品| 亚洲一卡二卡三卡四卡五卡| 久久久中精品2020中文| 欧美日本一区| 亚洲电影成人| 欧美一区二区视频97| 亚洲黄一区二区三区| 亚洲一卡久久| 欧美日韩国产一区| 亚洲国产精品毛片| 久久久久九九九九| 亚洲专区在线视频| 欧美日韩一区二区在线| 亚洲欧洲日本在线| 美女在线一区二区| 欧美在线观看视频一区二区| 欧美性色aⅴ视频一区日韩精品| 亚洲成色999久久网站| 久久久久久综合网天天| 亚洲午夜av在线| 欧美日韩亚洲在线| 亚洲另类自拍| 亚洲国产精品va在看黑人| 久久er精品视频| 国产午夜精品理论片a级探花| 亚洲一区制服诱惑| 日韩亚洲欧美一区二区三区| 你懂的成人av| 亚洲人成网站在线观看播放| 久久久精品动漫| 性亚洲最疯狂xxxx高清| 国产乱码精品一区二区三区忘忧草 | 亚洲自拍偷拍福利| 欧美成ee人免费视频| 欧美影院一区| 国产一区二区三区四区老人| 久久不见久久见免费视频1| 亚洲永久网站| 国产午夜精品麻豆| 久久久人成影片一区二区三区观看 | 亚洲综合导航| 亚洲一区二区3| 国产精品久久九九| 欧美一区二区三区在线观看| 久久一区二区三区四区五区| 精品99一区二区三区| 亚洲一区二区高清视频| 99日韩精品| 国产精品免费aⅴ片在线观看| 亚洲欧美另类在线观看| 亚洲欧美久久久| 国内一区二区三区在线视频| 久久精品一区二区三区四区| 欧美中在线观看| 亚洲国产cao| 亚洲乱码国产乱码精品精98午夜| 欧美日韩18| 午夜日韩激情| 久久久视频精品| 99在线热播精品免费| 亚洲一区二区三区在线观看视频| 国产日韩欧美在线播放不卡| 免费欧美视频| 欧美日韩国产精品一卡| 久久精品成人一区二区三区| 久久免费视频一区| 亚洲一区二区在线观看视频| 欧美一区二区在线免费观看| 亚洲国产一区二区三区a毛片| 99精品热视频只有精品10| 国产午夜精品全部视频在线播放| 欧美成在线视频| 国产老肥熟一区二区三区| 欧美成人免费大片| 欧美亚韩一区| 欧美成人久久| 国产欧美在线播放| 亚洲美女黄网| 亚洲黄色在线看| 小黄鸭精品aⅴ导航网站入口| 亚洲另类自拍| 久久亚洲精品视频| 欧美一区视频| 欧美亚日韩国产aⅴ精品中极品| 免费永久网站黄欧美| 国产精品夜夜夜| 亚洲美女少妇无套啪啪呻吟| 亚洲成人在线视频播放| 欧美一区二区三区在线视频 | 久久亚洲综合网| 欧美在线观看视频在线| 欧美日韩国产一区二区三区地区 | 一区在线视频观看| 午夜精品久久久久| 亚洲午夜国产一区99re久久| 久久久www成人免费精品| 小辣椒精品导航| 欧美三级电影一区| 亚洲精品老司机| 亚洲第一精品在线| 久久久久久亚洲精品杨幂换脸| 欧美一区二区三区在线| 精品二区久久| 久久久精品一区| 久久国产精品久久w女人spa| 欧美网站在线| 日韩午夜免费视频| 国产一区二区三区黄视频| 亚洲校园激情| 午夜精品短视频| 国产免费成人av| 亚洲欧美偷拍卡通变态| 欧美在线视频免费观看| 国产模特精品视频久久久久| 亚洲欧美日韩一区二区三区在线观看 | 欧美黄网免费在线观看| 国产一区二区久久| 欧美在线在线| 欧美二区在线观看| 亚洲精品综合| 欧美午夜一区二区三区免费大片| 一区二区日韩免费看| 欧美亚洲系列| 国内精品一区二区| 欧美freesex交免费视频| 亚洲国产精品一区二区第四页av| 日韩性生活视频| 国产精品久久久久秋霞鲁丝| 亚洲欧美综合另类中字| 久久先锋影音av| 日韩视频在线观看国产| 欧美亚州一区二区三区| 欧美一区二区日韩| 欧美激情第二页| 亚洲欧美综合国产精品一区| 国产一区二区三区无遮挡| 久久五月天婷婷| 一本大道久久精品懂色aⅴ | 亚洲狠狠丁香婷婷综合久久久| 夜夜嗨av色综合久久久综合网| 欧美亚洲成人精品| 久久精品中文字幕免费mv| 亚洲国产精品日韩| 亚洲欧美中文字幕| 亚洲国产精品成人精品| 欧美色中文字幕| 久久手机精品视频| 亚洲一区二区三区高清| 麻豆精品传媒视频| 亚洲欧美国产精品桃花 | 久久福利资源站| 91久久午夜| 国产美女诱惑一区二区| 欧美精品久久久久久久久久| 亚洲欧美影音先锋| 亚洲精品小视频在线观看| 久久久久久久综合狠狠综合| 日韩午夜在线观看视频| 一区二区三区在线高清| 国产精品色在线| 欧美日本国产一区| 久久伊人精品天天| 午夜精品免费在线| 日韩视频欧美视频| 亚洲福利视频网| 久久久在线视频| 亚洲欧美一区二区视频| 一本一本a久久| 亚洲精品欧美日韩专区| 狠狠综合久久av一区二区老牛| 欧美一区二区三区电影在线观看| 国产伦精品一区二区三区在线观看 | 一区二区三区福利|