vc#でWord制御 ‐ ページ番号と行番号を取得 ‐ [仕事とプログラムのハナシ]
普通にWordを使うとき、文書のカーソル位置に応じて、ステータスバーのページ番号と行番号が変化する。
アプリからWord制御するときに、このページ番号と行番号を取得して、実行ログに残しておきたかった。
結論としては、Word.RangeのInformationを取得して、そこからWdInformation列挙体で欲しい情報を指定するだけ。とっても簡単。VB.NETでも同様に取得できるようです。
ググってみたところ、すんなりとは見付からなかったので、自分用めも。(探し方が悪かったのかも?簡単すぎて説明するレベルじゃなかったのかも??)
当然のことながら保証しないので、自己責任でどうぞ。
例外処理なんかも入れてくださいね。
Wordオートメーションアプリの動作確認環境は以下の通り
◆VC# 2008 Express Edition
◆.NET Framework 3.5 SP1
◆Office 2007 (Word 2007)
アプリから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)
2013-12-25 19:06
nice!(0)
コメント(0)
トラックバック(0)
コメント 0