misty247

misty247

2011.08.12
XML
カテゴリ: 点字・点訳
 ◆ Mission8. 出力用テンプレート作成 ◆

 どうしよう、どうしよう、とまだ悩んでいるところ。

と、はなから断ってしまうのも一つの手。手というより、有効手段がみつからない申し開きか。

 なんとかイベントを捕まえて、格好つけられないか、と模索していたところ、以下の頁に出会った。

「イベントを使用して Microsoft Word を制御する」
http://msdn.microsoft.com/ja-jp/library/aa140279%28v=office.10%29.aspx

 2003年と古い記事だが、こんなことが出来るのか、と内容に驚いた。

 で、この頁の情報に従い、あれこれ試行錯誤して、問題解決したかというと、結果はノー。それどころか、抱えている問題が、想像以上に複雑で、どうあがいてもスマートな解決が望めないことを確信するにいたった。

 Quitイベントが捕らえられたら、と喜んだのも束の間、コードを試しても呼ばれない。なぜだろう、とググったら「Unloadされているから無理でしょ:-) 」……って、まぁ理屈ではそうだけど、このイベント、外部からの操作用なのか。

 Document_Open() したものは、Document_Close() が呼ばれる。

 これは致命的な問題だったが、Applicationイベントの DocumentBeforeClose() イベントなら呼ばれることがわかった。
 Document_Close() と DocumentBeforeClose()、どちらも未保存確認前に呼ばれる所が、嬉しくないものの、両のケースで、終了前を捕まえることが出来たのは、一縷の望みをつないでくれた。

 文書の変更有無は Saved プロパティで管理されている。Trueにすれば保存を促すダイアログは出ない。(ここでキャンセルされて、1文書で2回走るとマズい) Newした文書は、SaveAs でダミー保存させてやれば、同じく、保存を促すダイアログは出ない。
 未保存確認は、自前のダイアログで、面倒みることもできる。しかし、墨字文書があれば、点字文書は何度も再生可能なので、破棄は惜しまれない。本処理の特性からして、未保存確認は省いてよいだろう。

 開かれている点字文書の管理を行い、最初の文書が開かれた時に、設定値の保存と書き換えを行い、最後の文書が閉じられた時に、設定値の復元を行う。
 「最後の文書が閉じられた時」、この検知が肝だった。
 「一度きりしか走らない」文書を閉じるときのイベントを捏造?したから、なんとかなった。

 これでなんとか格好がつくか。





お気に入りの記事を「いいね!」で応援しよう

Last updated  2011.08.12 19:13:34
コメント(4) | コメントを書く


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

© Rakuten Group, Inc.
X
Design a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: