2010年4月10日土曜日

Word文書のチェックツール2: 指定以外のフォントが使われている場所を見つける

以前「Word文書のチェックツールを作ってみました→障害だらけ。。。」という記事でWord文書の中で指定されたフォント以外を使っている箇所を自動的に探すことをツールで自動化してみる試みについて書きました。

その中で、Range.MoveにWdUnits.CharacterFormattingを渡したときの挙動が不審だと言いましたが、やっと理解することができました。これは文字スタイルが変更されている箇所まで移動なんですね。そう言われると当たり前な気がしますが、ポイントは段落が変わっても、文字スタイルが「段落フォント」である限り、そこでは止まらないということです。

例えば、2つの段落に「見出し1」「本文」という段落スタイルが適用されていて、見出し1のフォント設定が「創英角ゴシックUB」、本文のフォント設定が「MS Pゴシック」だとしても、その間はCharacterFormattingは同じであると判断されます。うーん。便利なような不便なような。。。いや不便ですね :s

私の中でのイメージでは、段落スタイルと文字スタイルは親子関係にあって、1段落の中に複数の文字スタイルがあり、段落が切れると文字スタイルも一旦切れるものだと思っていました。

でも実際は違うんですね。段落スタイルと文字スタイルは完全に別物なんですね。文字スタイルと段落スタイルの片方だけ追っていても、フォントの変更は検出できないんですね。なんてことだ。。。:(

あと、このフォント一覧検出プロジェクト(!?)で試行錯誤してて思いましたが、マクロでの検索(Find)や移動(Move)って驚くほど遅いですね。びっくりします。

ただ文書を走査するだけなら、XML(WordML)に書き出してからDOM使った方が早いに決まっているんですけどね。それだと文書上の何ページの何行何列か分からないので、こんな手法を取らざるを得ないのです。

痛し痒し。。。

1 件のコメント:

部長 さんのコメント...

柳沢が鹿島に復帰してその復帰戦でいきなりハットトリックを決めた、という記事が新聞の一面を飾る、という夢を見ました。やけにリアルな夢でした。