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

振動理論

我的C++實現之路

用Visual C++操縱MS Word

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

  一、概念

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

  二、結構層次

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

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;第三步,調用 Document 的函數 SaveAs,參數是一個字符串型的文件名。

  三、基本步驟

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

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

  (3)Add Class...\From a type Library... 在 Office 目錄中,找到你想使用的類型庫。(我使用的是 Office2000,其Word 的類型庫文件,保存在 C:\Program Files\Microsoft Office\Office\MSWORD9.OLB)根據你 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)選擇類型庫文件后,在彈出的對話窗中繼續選擇要添加的類。具體選擇什么類,要看你將來在程序中打算調用什么功能。當然,你也可以不用考慮這么多,用鼠標和Shift鍵配合,全部選擇也可以。

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

  (6)在你需要調用 Office 功能函數的 cpp 文件中

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

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

  四、實現技巧

  在書寫調用 Office 函數的過程中,最困難的是確定函數的參數,一般情況下,參數都是 VARIANT 類型的變量指針。那么到底具體我們應該怎么寫那?推薦兩個方法,其一是閱讀有關 VBA 的書籍;其二,是使用 Office 中自帶的“宏”功能。強烈推薦大家使用第二個方法,把你要完成的功能,在 Office 的操作環境中,用宏錄制下來,然后觀察分析錄制后的函數和參數,就可以在 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 中對應的函數原型為 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)

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

  五、步步為營

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

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

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

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

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


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   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久久精品美女高潮| 亚洲毛片在线| 欧美日韩福利视频| 亚洲天堂成人在线视频| 一本到12不卡视频在线dvd| 欧美日韩视频在线观看一区二区三区 | 亚洲国产成人精品女人久久久 | 亚洲永久网站| 亚洲在线观看免费| 国产主播一区| 欧美国产精品日韩| 欧美日本亚洲视频| 亚洲欧美日韩人成在线播放| 亚洲自拍偷拍麻豆| **欧美日韩vr在线| 亚洲国产一区视频| 国产精品久久中文| 裸体歌舞表演一区二区| 欧美大片免费| 久久av一区二区| 老**午夜毛片一区二区三区| av72成人在线| 欧美一区二区三区四区夜夜大片| 影音先锋日韩有码| 一本色道久久综合亚洲91| 国产日韩欧美在线播放| 欧美黑人一区二区三区| 欧美视频一区二区| 久久久欧美精品sm网站| 欧美伦理91| 久久久成人网| 欧美三级韩国三级日本三斤| 久久影院午夜论| 欧美日韩国产一级| 久久综合999| 国产精品福利影院| 亚洲大片精品永久免费| 国产日产高清欧美一区二区三区| 亚洲国产美国国产综合一区二区| 国产精品系列在线| 亚洲精品影院| 在线日韩中文字幕| 亚洲欧美日本国产有色| 亚洲麻豆国产自偷在线| 久久精品亚洲精品| 欧美影院午夜播放| 欧美午夜电影一区| 亚洲黄色在线视频| 亚洲狠狠婷婷| 久久免费观看视频| 久久免费偷拍视频| 国产精品一区二区你懂得| 亚洲精品久久视频| 亚洲精品久久久久| 久久夜色精品国产| 蜜臀91精品一区二区三区| 国产视频一区在线观看| 中文在线不卡| 亚洲在线一区二区| 欧美日韩国产在线观看| 亚洲国产日韩综合一区| 亚洲福利视频一区| 玖玖综合伊人| 欧美 日韩 国产在线 | 欧美三日本三级少妇三2023 | 中文久久乱码一区二区| 欧美gay视频| 亚洲国产成人久久综合| 亚洲精品久久| 欧美日韩福利视频| 亚洲精选在线观看| 亚洲一区二区av电影| 欧美午夜在线一二页| 亚洲色无码播放| 亚洲欧美日韩国产综合在线| 国产精品久久久久久久午夜| 这里只有精品丝袜| 欧美一区二区三区久久精品茉莉花| 欧美三级不卡| 亚洲淫片在线视频| 久久久蜜臀国产一区二区| 韩日成人在线| 欧美国产欧美亚洲国产日韩mv天天看完整 | 免费不卡在线观看| 亚洲精品综合| 国产精品s色| 亚洲欧美在线aaa| 老司机凹凸av亚洲导航| 亚洲国产一区二区三区高清 | 免费高清在线视频一区·| 欧美激情一区二区三区全黄| 亚洲精品在线观| 欧美三级在线| 性久久久久久| 亚洲国产视频a| 亚洲一区日韩在线| 国产一区二区精品久久99| 理论片一区二区在线| 亚洲美女淫视频| 久久精品成人| 亚洲美女毛片| 国产日韩欧美一区二区三区在线观看| 久久精品72免费观看| 欧美大片在线看| 香蕉久久精品日日躁夜夜躁| 伊人男人综合视频网| 欧美日韩亚洲91| 久久久久久夜| 中文日韩欧美| 亚洲第一区在线| 久久精品亚洲| 一区二区欧美亚洲| 一区在线观看视频| 国产精品日日摸夜夜摸av| 麻豆免费精品视频| 亚洲欧美日韩国产一区| 亚洲人成人一区二区三区| 久久久久免费| 亚洲欧美视频在线观看| 亚洲人精品午夜| 伊人久久综合97精品| 国产精品午夜视频| 欧美三区在线视频| 欧美成人免费小视频| 久久久久久久久久码影片| 亚洲一区二区成人在线观看| 亚洲日本va午夜在线电影| 久久综合图片| 久久久精彩视频| 香蕉久久夜色精品国产| 亚洲天堂男人| 一区二区久久| 日韩亚洲国产欧美| 亚洲国产老妈| 极品尤物久久久av免费看| 国产美女一区| 国产精品美女在线| 欧美吻胸吃奶大尺度电影| 欧美日韩1区2区| 欧美精品福利视频| 欧美成人一区二区三区在线观看| 久久精品一本久久99精品| 亚洲欧美网站| 久久成人免费网| 久久久久久久尹人综合网亚洲| 亚洲欧美综合精品久久成人 | 欧美多人爱爱视频网站| 久久米奇亚洲| 米奇777超碰欧美日韩亚洲| 久久综合给合久久狠狠色| 久久久久久久久久久久久9999 | 一本一道久久综合狠狠老精东影业 | 亚洲高清久久网| 亚洲破处大片| 亚洲另类自拍| 亚洲资源在线观看| 性欧美激情精品| 久久久免费观看视频| 老司机免费视频一区二区| 另类激情亚洲| 91久久综合| 一本色道久久综合亚洲精品不卡 | 裸体丰满少妇做受久久99精品| 久久久久一区二区| 欧美高清免费| 国产精品高清网站| 国产中文一区| 亚洲精选在线观看| 亚洲一区二区三区精品在线| 欧美一区二区三区在| 美女主播视频一区| 亚洲美女黄色| 欧美亚洲一区二区在线观看| 久久久久久久久蜜桃| 欧美精品久久天天躁| 国产欧美1区2区3区| 亚洲国产一二三| 午夜精品久久久久久久99樱桃| 久久久亚洲精品一区二区三区| 亚洲国产成人精品女人久久久| 中国女人久久久| 久久综合国产精品| 国产精品久久久久免费a∨大胸| 国产综合色产在线精品| 亚洲美女黄网| 开心色5月久久精品| 日韩视频―中文字幕| 久久精品亚洲一区二区| 欧美偷拍另类| 亚洲成人资源网| 性8sex亚洲区入口| 亚洲日本va午夜在线电影| 久久精品视频网| 国产精品国产一区二区| 亚洲精选在线| 男女激情久久| 欧美在线观看网站| 国产精品不卡在线| 亚洲精品在线视频观看|