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

振動理論

我的C++實現(xiàn)之路

用Visual C++操縱MS Word

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

  一、概念

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

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

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

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

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

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

  三、基本步驟

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

 ?。?)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鍵配合,全部選擇也可以。

 ?。?)初始化COM。方法一,找到App的InitInstance()函數(shù),在其中添加 AfxOleInit()函數(shù)的調(diào)用;方法二,在需要調(diào)用COM功能的地方 CoInitialize(NULL),調(diào)用完畢后 CoUninitialize()。

 ?。?)在你需要調(diào)用 Office 功能函數(shù)的 cpp 文件中

#include <atlbase.h> // 為了方便操作 VARIANT 類型變量,使用 CComVariant 模板類
#include "頭文件.h"
// 具體的頭文件名,是由裝載類型庫的文件名決定的。(鼠標(biāo)雙點包裝類的文件,就可以看到)
// 比如使用 msword9.olb類型庫,那么頭文件是 msword9.h

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

  四、實現(xiàn)技巧

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

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

  以上是在 Word 中錄制的一個保存文件的宏,而在 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 是什么類型那?其實這是一個表示保存的時候指定文件類型的常量,而且顯然是 DWORD 類型VARIANT(VT_I4)。那么常量的數(shù)值又是多少那?很簡單,寫一個宏,調(diào)用函數(shù) MsgBox 顯示一下不就都知道啦?!

  五、步步為營

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

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

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

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

posted on 2007-05-31 08:58 唯月釋懷 閱讀(281) 評論(0)  編輯 收藏 引用


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


My Links

Blog Stats

常用鏈接

留言簿(5)

隨筆檔案

文章檔案

My sohu blog

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲午夜久久久| 一本一本大道香蕉久在线精品| 欧美激情成人在线| 暖暖成人免费视频| 久久综合久久综合九色| 一区二区三区 在线观看视| 亚洲国产福利在线| 国产欧美日韩视频一区二区三区| 欧美一区二区三区精品电影| 久久久久久久久综合| 国产亚洲一区二区三区在线播放| 欧美一区二区精品在线| 亚洲一区欧美一区| 亚洲第一在线| 亚洲麻豆视频| 91久久亚洲| 狠狠色狠狠色综合| 久久日韩精品| 欧美在线视频二区| 国产精品视频1区| 欧美国产精品专区| 欧美日韩国产精品一卡| 老司机一区二区三区| 久久久久久久激情视频| 午夜精品久久久久久久久久久| 另类激情亚洲| 亚洲电影在线观看| 亚洲国产电影| 亚洲一区3d动漫同人无遮挡| 欧美日韩亚洲精品内裤| 午夜精品久久久久久久久久久久久| 久久精品亚洲| 亚洲欧美高清| 一本色道久久精品| 久久午夜精品一区二区| 欧美成人精品福利| 久久激情视频免费观看| 欧美在线视频免费播放| 欧美xart系列高清| 欧美成人a∨高清免费观看| 亚洲国产精选| 亚洲欧美日本国产有色| 农夫在线精品视频免费观看| 欧美日韩精品在线| 国产精品久久久久久久久久免费看 | 欧美在线一级va免费观看| 亚洲免费av电影| 久久久精品日韩欧美| 美女视频一区免费观看| 亚洲免费网站| 久久野战av| 午夜视黄欧洲亚洲| 欧美精品色综合| 一区二区精品国产| 亚洲激情婷婷| 久久人91精品久久久久久不卡| 一区免费观看视频| 久久久女女女女999久久| 久久噜噜噜精品国产亚洲综合| 亚洲第一在线视频| 欧美高清在线一区| 欧美国产日本| 9久草视频在线视频精品| 国产精品欧美久久| 午夜视频一区二区| 欧美ed2k| 香蕉乱码成人久久天堂爱免费 | 美日韩精品视频免费看| 欧美一区二区成人6969| 亚洲免费在线看| 亚洲欧洲另类国产综合| 欧美不卡视频一区发布| 欧美日韩一区精品| 亚洲一区二区三区国产| 亚洲男人的天堂在线| 国产伦精品一区二区三区四区免费| 亚洲午夜精品一区二区| 亚洲图片在线| 日韩视频免费| 亚洲精品日日夜夜| 国模精品一区二区三区色天香 | 欧美成va人片在线观看| 国产视频自拍一区| 蜜臀av国产精品久久久久| 久久中文字幕一区二区三区| 一本色道久久综合亚洲精品不卡 | 午夜天堂精品久久久久| 极品少妇一区二区三区精品视频 | 久久女同精品一区二区| 亚洲人成网在线播放| 久久成人免费电影| 亚洲欧美成人网| 亚洲免费在线观看视频| 欧美高清视频一二三区| 亚洲乱码日产精品bd| 午夜视频久久久| 在线观看亚洲精品视频| 亚洲人成人99网站| 日韩视频中午一区| 欧美中文字幕不卡| 久久国产欧美| 国产精品久久999| 日韩亚洲精品电影| 日韩视频免费在线观看| 在线视频一区观看| 一区二区三区四区精品| 欧美日韩亚洲天堂| 亚洲日本va午夜在线电影| 欧美在线视频网站| 蜜月aⅴ免费一区二区三区| 欧美人在线观看| 亚洲美女黄色片| 在线一区二区日韩| 亚洲与欧洲av电影| 欧美日韩在线看| 亚洲性人人天天夜夜摸| 久久国产手机看片| 亚洲人体一区| 国产精品久久久一本精品| 亚洲欧美另类久久久精品2019| 亚洲精品一区二区三| 国产九九视频一区二区三区| 亚洲嫩草精品久久| 欧美午夜寂寞影院| 欧美一级大片在线免费观看| 久久免费视频网| 亚洲人成在线播放| 亚洲第一页自拍| 久久精品理论片| 美女黄毛**国产精品啪啪| 国产精品一区免费在线观看| 欧美国产综合视频| 精品成人a区在线观看| 亚洲欧美日韩国产综合| 中日韩午夜理伦电影免费| 欧美国产视频在线| 欧美成在线视频| 亚洲激情网站免费观看| 久久资源在线| 欧美韩国日本一区| 久久久夜夜夜| 欧美综合激情网| 午夜精品久久久久久久久久久久久 | 91久久极品少妇xxxxⅹ软件| 欧美视频免费在线| 欧美日韩精品免费观看视频| 欧美日韩伊人| 欧美韩国日本一区| 欧美日韩高清免费| 国产日韩欧美视频| 黄色亚洲网站| 亚洲精选91| 亚洲国产精品传媒在线观看 | 久久久久久香蕉网| 亚洲精品在线视频观看| 一区在线免费| 99在线精品观看| 亚洲一区日韩| 美国成人直播| 裸体女人亚洲精品一区| 国内久久视频| 在线观看久久av| 日韩午夜免费视频| 亚洲电影av| 亚洲人成网站999久久久综合| 久久精品首页| 欧美激情四色| 一本色道精品久久一区二区三区| 亚洲一区二区三区精品在线 | 香蕉免费一区二区三区在线观看| 午夜精品久久久| 精品福利av| 久久久久久网| 国产在线观看一区| 亚洲毛片播放| 久久美女性网| 亚洲综合日本| 欧美日韩精品综合| 亚洲国产日韩精品| 欧美一区二区三区四区夜夜大片| 久久九九免费视频| 亚洲欧美日韩视频一区| 欧美成人一区二区三区| 欧美三级日韩三级国产三级| 国产伦精品一区二区三区视频黑人| 亚洲国产精品女人久久久| 欧美影视一区| 亚洲午夜精品17c| 国产精品高清网站| 小辣椒精品导航| 亚洲欧美欧美一区二区三区| 国产精品精品视频| 久久久噜噜噜久噜久久| 国产精品福利网站| 日韩午夜精品视频| 一区二区三区黄色| 国产视频亚洲精品| 欧美大片第1页| 欧美国产日本在线| 亚洲综合电影|