亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        批量查找替換的實現(xiàn)

        2011-10-10 07:31:54梁海珍
        關鍵詞:調(diào)用列表本例

        梁海珍

        (武警指揮學院,天津 300250)

        0 引言

        Word作為常用的辦公軟件之一,提供了查找替換功能,可根據(jù)設定對文檔內(nèi)容進行查找替換,但一次只能完成一項查找替換,當有多項需要替換時就需要設置多次,操作比較麻煩。如“1”替換為“一”,“五筆”替換為“拼音”,就需要進行兩次設置完成替換。本例通過VC++調(diào)用Word組件,可設置多個查找替換項,對當前Word文檔進行批量查找替換,為辦公帶來極大便利。

        1 實現(xiàn)原理

        Microsoft的Office產(chǎn)品,都提供了OLE Automation自動化程序的接口,使用VB、VBA和Script腳本調(diào)用Office功能比使用VC++調(diào)用要簡單得多。比如在Word中,調(diào)出菜單“工具—宏—錄制新宏”,這時候開始記錄Word中任何菜單和鍵盤的操作,并把操作過程保存起來,以便再次重復調(diào)用。這些操作記錄的保存,其實就是使用了VBA程序(Visual Basic for Application)。VC++調(diào)用 Word 組件,同樣要參考VBA的方法,通過查看宏代碼,可以清楚地看出要使用哪些類、哪些成員函數(shù)。每一個Microsoft Office應用程序都在dll文件中提供了多種類型庫資源,這種 dll文件叫做目標庫(*.olb)。VC++調(diào)用Word組件,需要導入庫文件并導入相關的類才能使用Word中的各種功能。不同版本的應用程序其類型庫文件的名字不同,如Word 2003為msWord.olb,Word 2000 為 msWord9.olb。

        2 編程實現(xiàn)

        編程采用VC++和Word 2003實現(xiàn),只需在安裝有Word的機器上即可運行本例。本例選用數(shù)字、字母、漢字、特殊符號,實現(xiàn)了多種形式符號的替換。

        通過VC++調(diào)用Word組件即用自動化功能從Visual C++應用程序中控制Microsoft Office組件,在VC++中使用代碼組件一般有三種方法:(1)使用COM 庫函數(shù);(2)使用 MFC 的 ClassWizard;(3)使用#import指令。本例采用第二種方法,將涉及到Word中有關查找替換類導入添加到VC++程序中,如查找類Find,替換類Replacement等,根據(jù)需要進行參數(shù)設定調(diào)用函數(shù)。實現(xiàn)步驟如下:

        2.1 初始化

        (1)添加Word中的有關類

        VC++中新建一個Dialog-Base MFC AppWizard Exe工程 find,進入 ClassWizard,點擊 Add Class,選擇From A Type Library,找到office目錄下Word 2003 類型庫 msWord.olb,選擇 _Application、Documents、_Document、Selection、Find、Replacement 類 添加,并聲明對象 Wordapp、WordDocs、WordDoc、sel、find、replace。

        (2)在 find.cpp 中為 CFindApp:InitInstance()函數(shù)添加如下代碼:

        (3)在findDlg.cpp中添加如下兩個頭文件,并聲明對象:

        2.2 運行界面及有關響應函數(shù)

        在IDD_FIND_DIALOG對話框界面中添加控件及成員變量,并通過下文中所述示例逐步運行,界面如圖1所示:

        圖1 本例運行界面

        2.2.1 添加“新建W ord文檔”按鈕及響應函數(shù)

        Step1的功能:完成新建文檔,并提示用戶輸入需要查找替換的文件內(nèi)容。

        如本例是打開可執(zhí)行文件目錄下的11.doc,文檔輸入內(nèi)容為:首先插入分頁符,然后在第二頁中輸入“我們1家有5口人。小朋友會唱abc。家里有1只小狗。上下左右上下左右?!?/p>

        為按鈕添加主要代碼如下:

        //啟動Word應用程序

        CString docfilepath=strPath+"\11.doc";

        //參數(shù)設定,主要有文件名稱、確認轉(zhuǎn)換、只讀、添加到最近文檔、文檔口令等

        COleVariant vFileName(docfilepath),vStrNull(_T(""));

        COleVariant vFalse (short(0),VT_BOOL),vTrue(short(1),VT_BOOL);

        COleVariant vOpt((long)DISP_E_PARAMNOTFOUND,VT_ERROR);

        //打開文檔

        WordDoc.AttachDispatch(WordDocs.Open(vFile-Name,vOpt,vFalse,vOpt,vStrNull,vStrNull,vOpt,vStrNull,vStrNull,vOpt,vOpt,vTrue,vOpt,vOpt,vOpt,vOpt));

        }

        2.2.2 查找與替換項的設置與響應

        Step2的功能:填寫需要查找替換的多個項目,并可對已有項進行編輯修改。

        在界面中添加查找編輯項、查找列表項、替換編輯項、替換列表項等控件,并添加對應的成員變量m_editfind、m_listfind、m_editrep、m_listrep。在查找編輯框中輸入相應的內(nèi)容,“添加”到查找列表項中,并通過“刪除”、“插入”、“清空”等按鈕對查找列表內(nèi)容進行操作。同理,在替換編輯框中輸入查找項所對應的內(nèi)容,逐一添加到替換列表中,即查找列表與替換列表內(nèi)容一一對應。

        本文以step1中輸入內(nèi)容“我們1家有5口人。小朋友會唱abc。家里有1只小狗。上下左右上下左右?!睘槔?,如將文檔內(nèi)容中的“1”替換為“一”,“a”替換為“A”,“上”替換為“下”,“手動分頁符”替換為“段落標記”,則在查找編輯框中依次輸入“1”、“a”、“上”、“^m”,并添加到查找列表中,在替換編輯框中依次輸入“一”、“A”、“下”、“^p”,并添加到替換列表中。

        查找項的“添加”按鈕主要代碼如下:

        UpdateData();

        m_editfind.TrimRight();

        查找列表的“清空”按鈕主要代碼如下:

        m_ctrllistfind.ResetContent();

        同理,替換編輯項的“添加”與替換列表的“刪除”、“插入”、“清空”等按鈕的主要代碼與左邊查找項的代碼相類似,不再贅述。

        2.2.3 對查找項進行全部替換

        Step3的功能:通過點擊“替換”按鈕對step2中所設查找項進行全部替換。

        為按鈕添加主要代碼如下:

        //當對左邊查找項數(shù)與右邊替換項數(shù)判斷不一致時提示用戶重新核對查找與替換項是否一一對應。

        //替換函數(shù)的參數(shù)設置

        CcomVariant FindText(findstr),Match-Case(true),MatchWholeWord(false);

        CcomVariant MatchWildcards (false),MatchSoundsLike(false);

        CcomVariant MatchAllWordForms(false),F(xiàn)orward(true),Wrap(1),F(xiàn)ormat(false);

        CcomVariant ReplaceWith(replacestr),Replace(true),MatchKashida(false);

        CcomVariant MatchDiacritics (false),MatchAlefHamza(false),MatchControl(false);

        sel=Wordapp.GetSelection();

        sel.WholeStory(); //選中全文

        find=sel.GetFind(); //查找對象

        replace=find.GetReplacement(); //替換對象

        find.ClearFormatting();

        replace.ClearFormatting();

        //flag為查找替換標志,通過while循環(huán)對全文所有需替換內(nèi)容進行查找替換

        while(flag)

        {

        //主要參數(shù)有查找內(nèi)容、區(qū)分大小寫、全字匹配、使用通配符等

        flag=find.Execute (&FindText,&MatchCase,&MatchWholeWord,&MatchWildcards,&Match-SoundsLike,&MatchAllWordForms,&Forward,&Wrap,&Format,&ReplaceWith,&Replace,&MatchKashida,&MatchDiacritics,&MatchAlefHamza,&MatchControl);

        通過本步驟的查找替換操作,本例的文檔內(nèi)容更新為:換行符,然后第二行內(nèi)容是“我們一家有5口人。小朋友會唱Abc。家里有一只小狗。下下左右下下左右?!睂崿F(xiàn)了對全文中多個查找項的替換,如果有特殊要求如全字匹配、區(qū)分大小寫等,均可通過函數(shù)參數(shù)進行設定。

        3 結(jié)束語

        本文在VC++6.0、Word2003下實現(xiàn)了利用VC++新建Word文檔,并對多個查找項、替換項進行設置,完成所設多個項,如數(shù)字、字母、漢字、特殊符號的批量替換。還可以對本例進行進一步完善,如取消“新建Word文檔”對固定文檔路徑的設定,可以增加打開任意.doc文檔功能,對已有內(nèi)容的Word文檔直接進行操作;還可以利用Word查找中的高級選項,如設定查找內(nèi)容的字體、段落等格式,查找特殊符號等,增加本例的功能與實用性。

        [1]云舟工作室.中文版Word2000 VBA一冊通[M].北京:人民郵電出版社,2000.

        [2]Office VBA編程手冊合集(CHM)[Z].

        猜你喜歡
        調(diào)用列表本例
        巧用列表來推理
        《思考心電圖之176》答案
        學習運用列表法
        擴列吧
        《思考心電圖之169》答案
        核電項目物項調(diào)用管理的應用研究
        LabWindows/CVI下基于ActiveX技術的Excel調(diào)用
        測控技術(2018年5期)2018-12-09 09:04:46
        基于系統(tǒng)調(diào)用的惡意軟件檢測技術研究
        視功能分析圖例詳解
        不含3-圈的1-平面圖的列表邊染色與列表全染色
        中文字幕无码无码专区| 国产色婷婷久久又粗又爽| 色综合天天综合网国产成人网 | 亚洲自拍愉拍| 91亚洲夫妻视频网站| 国产香蕉视频在线播放| 欧美日韩一区二区综合| 久久水蜜桃亚洲av无码精品麻豆| 国产av一区二区三区狼人香蕉| 亚洲av无码国产精品色午夜软件 | 国产人妖乱国产精品人妖| 欧美国产精品久久久乱码| 久久久综合九色合综国产| 日韩黄色大片免费网站| 亚洲av色欲色欲www| 亚洲av无码国产剧情| 色婷婷色99国产综合精品| 一区二区午夜视频在线观看| 国产综合精品一区二区三区 | 亚洲国产精品嫩草影院久久av| 免费a级毛片无码a∨蜜芽试看| 亚洲av无码av制服丝袜在线| 亚洲成精品动漫久久精久| 伊人久久大香线蕉av最新午夜| 久久久噜噜噜久久| 免费人成黄页在线观看视频国产| 亚洲精品精品日本日本| 亚洲一区二区三区乱码在线中国| 久久夜色精品国产噜噜亚洲av| 国产精品每日更新在线观看| 日本久久视频在线观看| 日本一区二区在线播放| 国偷自产av一区二区三区| 亚洲一区极品美女写真在线看| 日韩精品专区在线观看| 欧美大肥婆大肥bbbbb| 99久久国产综合精品女乱人伦| 亚洲成人av大片在线观看| 亚洲乱亚洲乱妇| 午夜三级网| 亚洲av推荐网站在线观看|