KoMaDo   VISIO SQUARE : VB/VBA  ■ Headline ■ HOME    

VB/VBAトップへ ▼カッ飛び最後 

  ページにまつわる増減する情報の記録先

01: 名前:ゆう投稿日:2007/09/04(火) 16:54
Visio2007で開発を行っております。

その中で、ページ上に配置されたオブジェクトが、
チェックを行い、一定の条件に沿わないと多数のエラーを出す、という処理を
実装しようとしております。

そのエラー内容を格納しようとしているのですが、
その格納先に悩んでおります。
理想をいえば、Scripting.Dictinaryオブジェクトにでも持たせたいのですが、
ファイルを開閉することを考えると、どこかメモリ上ではなく、
ファイル上に記録させたいのです。

テキストファイルやDBに記録することも考えたのですが、
頻繁にアクセスする予定なので、処理速度の低下を嫌い、
避けたいところです。
一方、ページの図形データ(カスタムプロパティ)に持たせることも考えたのですが、
行が非常に多くなり、かつ増減が激しいです。
どこに持たせることが適当でしょうか。

02: 名前:yoda投稿日:2007/09/04(火) 17:43
普通は、シェイプシートのUser Defined Cellsを作り、格納します。

03: 名前:visGeek投稿日:2007/09/04(火) 17:53
永続化のためには、ページシートか
ドキュメントシートに記録するのがよいでしょう。

高速化のためには、図面オープン時などに
メモリにキャッシュするのが吉です。

04: 名前:‚ゆう投稿日:2007/09/04(火) 18:46
visGeek様

きちんと動作するか不安だったのですが、
図面オープン時にたとえばScripting.Dictionary に キャッシュしたとして、
その内容って、開いている間ずっと保持されるのでしょうか?
であれば、クローズ時に戻してあげればいいのかな、と考えました

05: 名前:visGeek投稿日:2007/09/04(火) 20:55
Visioとは直接関係のない、プログラム一般の話ですね。
「変数の有効期間」について、調べてみてください。

06: 名前:ゆう投稿日:2007/09/04(火) 21:04
visGeek様

了解しました。ありがとうございます。

07: 名前:‚ゆう投稿日:2007/09/04(火) 21:09
(途中で切れてしまいました。すいません。)
visGeek様

了解しました。ありがとうございます。

それで再確認してみました。
で、VisioにおいてDocumentオープンでSetしたグローバル変数の
Scripting.Dictionary は Documentクローズまで保持されるか分かりませんでした。

また途中でデバッグするときに、コードの実行をとめたりしても保持しつづける
のでしょうか?
実際に試してみたのですが、なんだか不安定な気がして質問させていただきました。

08: 名前:yoda投稿日:2007/09/05(水) 06:07
開発環境によりますが、VisioのVBAの場合、デバッグ中でも、
プログラムが動いていれば、保持されているかどうかは、
その変数の上で、マウスの右ボタンを押してみれば、
生きていれば、そのときの値が表示されます。
コードを編集するために、プログラムを止めれば、
当然開放されてしまいます。

09: 名前:visGeek投稿日:2007/09/05(水) 09:48
基本的には、図面を閉じるまでではなくVisioを終了するまで保持されます。
ただ、デバッグ中に特定の操作をするとリセットされてしまいます。

VBEの[ツール][オプション]で
[全般]タブの[状態の破棄を通知]も参考にしてください。

10: 名前:ゆう投稿日:2007/09/05(水) 16:15
理解できました。
本当にありがとうございます。


VB/VBAトップへ ▲カッ飛び先頭