So-net無料ブログ作成
検索選択

vc#でWord制御 ‐ ページ番号と行番号を取得 ‐ [仕事とプログラムのハナシ]

普通にWordを使うとき、文書のカーソル位置に応じて、ステータスバーのページ番号と行番号が変化する。
アプリからWord制御するときに、このページ番号と行番号を取得して、実行ログに残しておきたかった。

結論としては、Word.RangeのInformationを取得して、そこからWdInformation列挙体で欲しい情報を指定するだけ。とっても簡単。VB.NETでも同様に取得できるようです。

ググってみたところ、すんなりとは見付からなかったので、自分用めも。(探し方が悪かったのかも?簡単すぎて説明するレベルじゃなかったのかも??)

当然のことながら保証しないので、自己責任でどうぞ。
例外処理なんかも入れてくださいね。


using Microsoft.Office.Core;
using Word = Microsoft.Office.Interop.Word;
~~~略~~~
private  void GetPageLine_FromRange(Word.Range range, ref int page, ref int line)
{
    // wdActiveEndPageNumberは範囲末尾の位置を取得するので、範囲を先頭に絞る。
    // object型(実態はSystem.Int32型)で返ってくるので、さしあたりキャストしておく。
    page = (int)range.Characters[1].get_Information(Word.WdInformation. wdActiveEndPageNumber);
    // wdFirstCharacterLineNumberは範囲先頭の位置を取得するので、引数で受け取ったまま使う。
    // こちらもobject型(実態はSystem.Int32型)。
    line = (int)range.get_Information(Word.WdInformation.wdFirstCharacterLineNumber);
}


Wordオートメーションアプリの動作確認環境は以下の通り
◆VC# 2008 Express Edition
◆.NET Framework 3.5 SP1
◆Office 2007 (Word 2007)
nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0