- 01: 名前:小鳥投稿日:2006/06/15(木) 21:59
- はじめまして。
Visio初心者の小鳥です。
Visio2003を使用しています。
シートの並べ替えを制限したいのですが、
制限する方法はありますか?
具体的には、挿入されたシートの順番を変えられないように
制御したいためです。
よろしくお願いします。
- 02: 名前:yoda投稿日:2006/06/16(金) 09:04
- ちょっと、ややこしそうですねー。
たとえばVBAのDocument_DocumentChanged イベントで、ページの
移動が検出できるので、検出したら強制的にUndoする、というのは
どうでしょう?
- 03: 名前:visGeek投稿日:2006/06/16(金) 10:17
- 「ページの並べ替え」メニューを
disableにしてしまうという手もあるかもしれません。
ところで、並べ替えを制限したい理由はなんでしょうか。
もしPage.Indexと何かを関連付けているからだとすると
IndexではなくIDを使用するようにすれば問題ないはずです。
- 04: 名前:小鳥投稿日:2006/06/16(金) 11:29
- yodaさん、visGeekさん
さっそくの返信ありがとうございます。
>yodaさん
Document_DocumentChangedイベントを拾って、
application.undoを実行しようとすると、
例外が発生してしまいます。
なぜでしょうか???
過去ログを参照したところ記事は見つかったのですが
ちょっと難しくて理解できませんでした・・・、すみません。
>visGeekさん
現在、VisioをベースにしてVBAで簡単なアプリを作成しています。
ユーザーにはアプリを起動したときのシート順番(index)で
図面を作成してもらいたいと思っています。
確かに、「ページ並べ替え」のメニューを非活性にすればと思ったのですが、
シートをドラッグして移動できてしまうようなので、何かしら制御が必要かなと思いました。
- 05: 名前:yoda投稿日:2006/06/16(金) 11:51
- undoは、apiを使ってください。何年も前に、ここで教わったものです。
Public Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Sub DoUndo()
hwnd = Visio.Application.WindowHandle32
Call PostMessage(hwnd, &H111, &H3F9, hwnd)
End Sub
Sub DoRedo()
hwnd = Visio.Application.WindowHandle32
Call PostMessage(hwnd, &H111, &H3FA, hwnd)
End Sub
- 06: 名前:小鳥投稿日:2006/06/16(金) 14:13
- yodaさん
APIを使用してundoできました。
Document_DocumentChangedイベントが発生したとき、
何のプロパティが変更されたか分るのでしょうか?
- 07: 名前:yoda投稿日:2006/06/16(金) 14:16
- ヘルプには、図面のプロパティが変更されたときに出る、と書いてあった
と思います。確かめてみてください。
- 08: 名前:小鳥投稿日:2006/06/16(金) 14:58
- yodaさん
上記の記述が分りづらい文面ですみません。
上記の内容を訂正します。
「このイベントが発生したとき、図面プロパティの中のどのプロパティが
変更されたか識別する方法はありますか?」と言う質問をしたかったのです。
- 09: 名前:yoda投稿日:2006/06/16(金) 16:28
- 実際に、試して見たほうが早いと思いますが、変更前の図面のプロパティ
をどこか(ユーザー定義セルがいいと思います)に記憶しておいて、イベ
ント発生時に、それと比較したら、わかるような、感じがしますが、いかが
でしょう?でも、ページの変更を阻止するためだけに、そのようなチェック
が必要なのでしょうか?ページの順序が変わったかどうかだけを、比較
してチェックすれば、よいような、感じがしますが、いかがでしょうか?
- 10: 名前:小鳥投稿日:2006/06/21(水) 15:53
- yodaさん
返事遅れました。
yodaさんのアドバイス通り、ページの順序の変更をチェックして
実現できました。
ありごとうございました。
また、何かありましたら参考にしていただきます。
■トップに戻る リロード 単独スレ表示
|