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

Visual C++ 中操縱 MS Word 123

使用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 2008-04-27 15:28 wrh 閱讀(263) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


導航

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

統計

常用鏈接

留言簿(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>
            午夜在线一区二区| 新67194成人永久网站| 欧美日本在线| 欧美日韩国产一中文字不卡| 欧美精选午夜久久久乱码6080| 蜜桃av一区二区| 欧美日本一区二区视频在线观看| 欧美日韩一区二区三区在线观看免| 欧美四级在线| 国内伊人久久久久久网站视频 | 国产精品久久久久久久久搜平片 | 亚洲性感激情| 午夜精品短视频| 老司机精品视频网站| 欧美激情小视频| 国产精品自拍小视频| 在线观看亚洲| 亚洲欧美日本国产有色| 久久久999成人| 亚洲精品国产精品乱码不99按摩| 亚洲日韩欧美视频一区| 亚洲欧美日韩综合国产aⅴ| 久久久最新网址| 欧美视频导航| 亚洲国产精品久久久久| 午夜精品久久久久久久99水蜜桃| 久久久爽爽爽美女图片| 一本一本久久a久久精品牛牛影视| 久久99在线观看| 国产精品国产三级国产普通话99| 亚洲国产精品久久人人爱蜜臀| 亚洲欧美另类久久久精品2019| 欧美1区视频| 欧美一区二区成人| 欧美日韩亚洲一区二区三区在线| 亚洲国产老妈| 久久亚洲电影| 欧美亚洲尤物久久| 国产精品日韩欧美大师| 一区二区三区视频在线播放| 免费亚洲电影| 久久黄色影院| 国产一区二区日韩精品| 亚洲一区观看| 99精品视频网| 欧美日韩亚洲一区二区三区在线| 亚洲乱码国产乱码精品精可以看 | 亚洲主播在线播放| 亚洲国产一区二区三区在线播| 欧美一区久久| 国产亚洲一区在线播放| 午夜精品一区二区三区在线视 | 久久久亚洲一区| 欧美一级专区免费大片| 国产乱码精品一区二区三区忘忧草| 亚洲视频导航| 亚洲香蕉成视频在线观看| 亚洲欧美久久| 日韩一级成人av| 亚洲高清视频一区二区| 久久精品人人做人人爽| 国产香蕉97碰碰久久人人| 久久精品人人| 久久久精彩视频| 亚洲高清av| 最新国产成人在线观看| 欧美日韩国产亚洲一区| 亚洲视频在线二区| 亚洲一区亚洲| 狠狠色狠狠色综合日日91app| 久久久久久亚洲精品中文字幕| 久久国产精品久久久| 亚洲国产精品久久久| 亚洲青色在线| 国产精品免费视频xxxx| 欧美一区国产一区| 久久精品免费| 洋洋av久久久久久久一区| 亚洲天堂av在线免费| 国产亚洲成人一区| 欧美激情按摩| 国产精品国内视频| 美女国内精品自产拍在线播放| 免费看精品久久片| 亚洲欧美日产图| 久久影音先锋| 亚洲综合999| 美女视频网站黄色亚洲| 亚洲欧美一区二区原创| 久久久女女女女999久久| 一本久道久久综合婷婷鲸鱼| 性欧美精品高清| 日韩一区二区福利| 欧美一区二区高清在线观看| 日韩视频一区二区| 欧美中文在线免费| 国产精品99久久久久久久久| 欧美自拍偷拍午夜视频| 亚洲视频观看| 欧美成人午夜激情视频| 久久国产精品免费一区| 欧美高清在线视频| 久久久久久香蕉网| 国产精品乱子久久久久| 欧美顶级少妇做爰| 国产一区在线看| 亚洲视屏在线播放| av不卡免费看| 欧美激情91| 欧美韩日一区二区| 激情久久一区| 香蕉成人啪国产精品视频综合网| 99国产精品自拍| 美国十次成人| 久久欧美中文字幕| 国产精品羞羞答答| 一本色道久久综合狠狠躁篇的优点| 在线国产欧美| 欧美中文字幕在线播放| 久久成人综合视频| 国产精品影音先锋| 激情小说另类小说亚洲欧美| 91久久国产综合久久91精品网站| 国产精品美女999| 日韩一级不卡| 一本色道久久综合狠狠躁的推荐| 久久综合久久久| 蜜桃av综合| 亚洲国产精品久久久久秋霞蜜臀| 久久精品视频免费| 久久久噜噜噜久久| 国产一区二区三区黄| 欧美在线免费观看| 美女尤物久久精品| 亚洲成色精品| 欧美成人资源| 日韩西西人体444www| 亚洲一区二区三区中文字幕在线| 欧美性一区二区| 亚洲综合第一页| 久久―日本道色综合久久| 一区二区在线不卡| 免费看亚洲片| 日韩视频永久免费观看| 亚洲欧美日韩国产成人| 国产欧美一区二区精品忘忧草 | 久久青草欧美一区二区三区| 久久青青草综合| 亚洲黄色免费| 欧美午夜大胆人体| 午夜精品福利一区二区蜜股av| 久久精彩视频| 亚洲国产精品www| 欧美日韩亚洲激情| 欧美在线观看一二区| 欧美激情1区2区3区| 在线视频免费在线观看一区二区| 国产精品二区三区四区| 欧美伊人久久久久久午夜久久久久| 久久视频这里只有精品| 91久久久国产精品| 欧美性猛交xxxx乱大交退制版| 亚洲欧美日韩网| 欧美韩国日本一区| 香蕉成人啪国产精品视频综合网| 国产一区久久久| 欧美麻豆久久久久久中文| 亚洲欧美日韩另类| 亚洲精华国产欧美| 久久精品国产视频| 99精品99| 伊甸园精品99久久久久久| 欧美日韩精品一区二区| 欧美在线亚洲综合一区| 亚洲九九爱视频| 久热精品在线视频| 日韩小视频在线观看| 国产一区二区三区日韩| 欧美国产日韩二区| 亚欧成人在线| 一区二区欧美国产| 亚洲国产精品久久久久久女王| 香蕉国产精品偷在线观看不卡| 亚洲精品一线二线三线无人区| 国产精品亚洲美女av网站| 欧美电影在线| 久久久久国产精品www| 亚洲视频精选在线| 亚洲福利精品| 欧美bbbxxxxx| 久久久国产视频91| 香蕉久久国产| 一区二区精品| 久久久久国产免费免费| 国产亚洲精品成人av久久ww| 欧美日韩成人| 欧美激情视频网站| 欧美成人dvd在线视频| 久久精品国产视频| 性色av一区二区三区|