Activate

指定された文書に切り替えて、アクティブにします。

構文
Document.Activate
引数
戻値

プログラム実行例

総段落数を取得

CONST wdDoNotSaveChanges = 0 CONST wdSaveChanges = -1 DIM arr[-1] FOR n = 0 TO GETALLWIN() - 1 arrayPush(arr, ALL_WIN_ID[n]) NEXT arrayFilter(arr, "STATUS(%val%, ST_CLASS) = <#DBL>OpusApp<#DBL> AND STATUS(%val%, ST_VISIBLE)") arrayMap("REPLACE(STATUS(%val%, ST_TITLE), <#DBL> - Microsoft Word<#DBL>, <#DBL><#DBL>)", arr) QSORT(arr, QSRT_A) TRY DIM Word = GETACTIVEOLEOBJ("Word.Application") EXCEPT MSGBOX("操作する文書を開いてださい。") EXIT ENDTRY DIM res = SLCTBOX(SLCT_RDO OR SLCT_STR, 0, "操作する文書を選択", arr) IFB res = -1 THEN MSGBOX("ファイル名が選択されなかったので終了します。") EXIT ENDIF Word.Documents(res).Activate PRINT Word.ActiveDocument.Paragraphs.Count ////////////////////////////////////////////////// // 【引数】 // array : 一次元配列 // callback : コールバック関数。callback内で配列の値は「%val%」で使うことができます。 // 【戻値】 // callback関数によりフィルタ処理が行われた arrayの全ての要素を含む配列を返します。 ////////////////////////////////////////////////// PROCEDURE arrayFilter(var array[], callback) DIM n = 0 DIM tmp[-1] FOR %val% IN array IFB EVAL(callback) THEN RESIZE(tmp, n) tmp[n] = %val% n = n + 1 ENDIF NEXT RESIZE(array, RESIZE(tmp)) FOR n = 0 TO RESIZE(tmp) array[n] = tmp[n] NEXT FEND ////////////////////////////////////////////////// // 【引数】 // callback : 配列の各要素に適用するコールバック関数 // array : コールバック関数を適用する配列 // 【戻値】 // callback関数を適用した後、 適用後の要素を含む配列 ////////////////////////////////////////////////// PROCEDURE arrayMap(callback, var array[]) DIM tmp[RESIZE(array)] DIM n = 0 FOR %val% IN array tmp[n] = EVAL(callback) n = n + 1 NEXT RESIZE(array, RESIZE(tmp)) FOR n = 0 TO RESIZE(tmp) array[n] = tmp[n] NEXT FEND ////////////////////////////////////////////////// // 【引数】 // array : 要素を追加する配列(参照引数) // str : 追加する要素 // 【戻値】 // 処理後の配列の中の要素の数 ////////////////////////////////////////////////// FUNCTION arrayPush(var arr[], str) DIM res = RESIZE(arr, UBound(arr) + 1) arr[res] = str RESULT = res + 1 FEND ////////////////////////////////////////////////// // 【引数】 // 配列 : 上限値を求める配列 // 【戻値】 // 配列の上限値 ////////////////////////////////////////////////// FUNCTION UBound(array[]) RESULT = RESIZE(array) FEND

指定したキーワードに下線を引く(Word)

CONST wdDoNotSaveChanges = 0 // 保留中の変更を保存しない CONST wdSaveChanges = -1 // 保留中の変更をユーザーに確認しないで自動的に保存する CONST wdPromptToSaveChanges = -2 // 保留中の変更を保存するかどうかをユーザーに確認する CONST wdFindStop = 0 CONST wdCharacter = 1 CONST wdUnderlineSingle = 1 CONST wdCollapseEnd = 0 DIM arr[-1] // すべてのIDをarr変数に格納 FOR n = 0 TO GETALLWIN() - 1 arrayPush(arr, ALL_WIN_ID[n]) NEXT // クラス名がOpusApp、通常の表示状態であるものを抽出 arrayFilter(arr, "STATUS(%val%, ST_CLASS) = <#DBL>OpusApp<#DBL> AND STATUS(%val%, ST_VISIBLE)") // IDからタイトルを取得し、そのタイトルから「 - Microsoft Word」を削除 arrayMap("REPLACE(STATUS(%val%, ST_TITLE), <#DBL> - Microsoft Word<#DBL>, <#DBL><#DBL>)", arr) QSORT(arr, QSRT_A) TRY DIM Word = GETACTIVEOLEOBJ("Word.Application") EXCEPT MSGBOX("操作する文書を開いてください。") EXIT ENDTRY DIM res = SLCTBOX(SLCT_RDO OR SLCT_STR, 0, "操作する文書を選択", arr) IFB res = -1 THEN MSGBOX("ファイル名が選択されなかったので終了します。") EXIT ENDIF Word.Documents(res).Activate DIM Document = Word.Application.ActiveDocument DIM Range = Document.Content // 下線を引くキーワード DIM keywords[] = "ギャラリー", "オプション", "テーマ" FOR item IN keywords Range.SetRange(0, 0) WITH Range.Find .Text = item .Forward = TRUE .Wrap = wdFindStop WHILE .Execute = TRUE WITH Range .Expand(wdCharacter) // 範囲 .Underline = wdUnderlineSingle // 下線を引く .Collapse(wdCollapseEnd) ENDWITH WEND ENDWITH NEXT //Word.Documents.Close(wdSaveChanges) //Word.Quit ////////////////////////////////////////////////// // 【引数】 // array : 一次元配列 // callback : コールバック関数。callback内で配列の値は「%val%」で使うことができます。 // 【戻値】 // callback関数によりフィルタ処理が行われた arrayの全ての要素を含む配列を返します。 ////////////////////////////////////////////////// PROCEDURE arrayFilter(var array[], callback) DIM n = 0 DIM tmp[-1] FOR %val% IN array IFB EVAL(callback) THEN RESIZE(tmp, n) tmp[n] = %val% n = n + 1 ENDIF NEXT RESIZE(array, RESIZE(tmp)) FOR n = 0 TO RESIZE(tmp) array[n] = tmp[n] NEXT FEND ////////////////////////////////////////////////// // 【引数】 // callback : 配列の各要素に適用するコールバック関数 // array : コールバック関数を適用する配列 // 【戻値】 // callback関数を適用した後、 適用後の要素を含む配列 ////////////////////////////////////////////////// PROCEDURE arrayMap(callback, var array[]) DIM tmp[RESIZE(array)] DIM n = 0 FOR %val% IN array tmp[n] = EVAL(callback) n = n + 1 NEXT RESIZE(array, RESIZE(tmp)) FOR n = 0 TO RESIZE(tmp) array[n] = tmp[n] NEXT FEND ////////////////////////////////////////////////// // 【引数】 // array : 要素を追加する配列(参照引数) // str : 追加する要素 // 【戻値】 // 処理後の配列の中の要素の数 ////////////////////////////////////////////////// FUNCTION arrayPush(var arr[], str) DIM res = RESIZE(arr, UBound(arr) + 1) arr[res] = str RESULT = res + 1 FEND ////////////////////////////////////////////////// // 【引数】 // 配列 : 上限値を求める配列 // 【戻値】 // 配列の上限値 ////////////////////////////////////////////////// FUNCTION UBound(array[]) RESULT = RESIZE(array) FEND