2011年1月13日 星期四

在WSH環境下呼叫Office Word的Check Spell功能

拼字檢查(Check Spell)是Microsoft Office Word提供的一項功能,用來檢查文章內是否輸入錯誤的字(句)。雖然看來是相當實用的功能,但我從來都沒有使用過這個功能;英文破到一個不行的我,最多也只會打How are you? I'm fine, thank you.這樣的英文句子,實在是用不到這樣的功能‧‧‧

英文破歸破,但還是不能放棄看懂英文的企圖心,待在程式設計領域中,大部份說明文件依舊是英文,就算不會寫也要會看。在「JScript 程式設計與應用:WSH」看到這個範例時,就手癢的試了一下,順便記錄下來。相信看久了,總有一天我也能寫一些些英文說明文件滴,這樣的功能就會用的上了,哇哈~



原範例程式碼修改如下(原範例程式可以自行到上述網站取回來參考):

<?xml version="1.0" standalone="yes" encoding="big5"?>

<package>
    <job>
        <!--
          @description 2011/01/12 拼字檢查。
          -->

        <script type="text/javascript" language="javascript" charset="utf-8">
        <![CDATA[

            /**
             *
             * 運用MS Word的拼字檢查功能進行拼字檢查。
             *
             * @author ace
             *
             * @version 2011/01/12 v0.1
             *
             * @param {String} astrContent 拼字檢查字串。
             *
             * @returns
             *
             * @description 2011/01/12 測試發現,執行多次以後會出現Normal.dot檔案鎖定問題。
             *
             */
            function checkSpell(astrContent) {

                var wdDialogToolsSpellingAndGrammar = 828;
                var wdDoNotSaveChanges = 0;

                var objWord = new ActiveXObject("Word.Application");
                var objDoc = objWord.Documents.Add();

                objWord.Selection.Text = astrContent;
                objWord.Dialogs(wdDialogToolsSpellingAndGrammar).Show();

                objDoc.Close(wdDoNotSaveChanges);
                objWord.Quit();
            }

            try {
                checkSpell(new String("Helllo World"));

                WScript.Quit(0);
            }
            catch (e) {
                WScript.Echo("執行過程有誤,錯誤訊息:" + e.description);
                WScript.Quit(1);
            }
        ]]>
        </script>
    </job>
</package>

主要程式碼並不長,運用ActiveXObject建立Word.Application物件後,再呼叫相關的函數處理拼字檢查。說真的,類似這樣的程式應用,程式設計的問題點應該會是卡在有什麼參數、函數可以呼叫與使用;不知道是不是找的方式不對,在網路上翻幾輪卻沒有找到比較完整的說明文件。

從這樣的應用例子來看,發現WSH(Windows Script Host)可以藉由搭配其它的應用程式來延申更廣的用法;將應用程式視作獨立的元件(Component),再由JScript來呼叫並組合成完整功能的應用,可以省卻許多編譯程式進行開發的時間。當然,前提是要有良好的系統分析,將應用程式的功能作好完善規劃才能有這麼理想的結果。

沒有留言:

張貼留言

Related Posts Plugin for WordPress, Blogger...