KoMaDo   VISIO SQUARE : VB/VBA  ■ Headline ■ HOME    

 KoMaDo / Headline / category :  【VISIO全般】  【News/宣伝】  【図形・操作】  【ファイル変換】  【ShapeSheet】  【VB/VBA】  【雑談その他】 ;

691 :ステンシルのプロシージャを呼び出す方法 (03)  692 :connectsコレクションのオブジェクト数 (04)  693 :[リンクを破棄します]ダイアログを出さない方法 (04)  694 :あらかじめ決めてある画像を取込むには (03)  695 :Deleteイベントで別シェイプを削除 (04)  696 :「オートメーション」を作成しました。(01) 
ログ検索  前のページ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70  総てのスレッド  スレッド総数 696691 - 696 表示


691: ステンシルのプロシージャを呼び出す方法  全レス

01: 名前:こうち投稿日:2000/04/17(月) 10:39
マクロ本体をステンシル(.vss)に置いて
テンプレート(.vst/.vsd)の
 thisDocument Document_DocumentCreated
 thisDocument Document_DocumentOpened
からマクロを起動したいと思っています。

いろいろやってみるのですが他のプロジェクトの
プロシージャをcallする方法がうまくいきません。

ご存じの方,教えていただけませんか。

02: 名前:かど 投稿日:2000/04/17(月) 15:19
かどです。恥も外聞もなく。

> マクロ本体をステンシル(.vss)に置いて
> テンプレート(.vst/.vsd)の
> thisDocument Document_DocumentCreated
> thisDocument Document_DocumentOpened
> からマクロを起動したいと思っています。

前置き:
ステンシルでマクロを組んでおきます。
Public Sub Message(vText as String)
msgbox vText
End Sub

マクロがあるステンシルをDocumentオブジェクトに
取得します。

private WithEvents theDoc as Visio.Document

Public sub Init()
Set theDoc = Visio.Documents.Item(??) <-- ステンシルのID

call theDoc.Message("abc")
End Sub

マクロ実行で Init() を実行してみてください。

ご質問では、thisDocument のイベントプロシージャで、という
ことでしたが、この例で勘弁してください。

ちなみに、Document_Opened() であれば、該当ステンシルをOpenさせてから
マクロをCallすればイケルと思います。

うっちゃりだったらどうしよう・・・。

03: 名前:こうち投稿日:2000/04/17(月) 19:12
かどさん,またもや感謝感謝。

実は私も同じようなことをやっていました。
だからRESを読んだとき「これもやったはずだけど」
と思いながらも素直にそのまま入力してみました。

そうしたら[WithEvents]がエラーになるんです。
「なんで?」と考えてみたら,[WithEvents]は
[ThisDocument]に書かないとだめなことを思い出しました。

その瞬間ひらめきました(遅い)。
私はcallされる方のプロシージャを挿入した
[標準モジュール]に書いていたんです。

わかってしまえば当然なことなんですが
callされる方も[ThisDocument]に書かないとだめなんですね。
それがわかれば後はすんなり行きました。

ほんとにありがとうございました。
助かりました。

>うっちゃりだったらどうしよう・・・。
いえいえ,今回は下手出し投げぐらい行ってますよ。

■トップに戻る リロード  単独スレ表示



692: connectsコレクションのオブジェクト数  全レス

01: 名前:Licca 投稿日:2000/04/13(木) 10:43
こんにちは!
図面の接続情報を表示させるプログラムを作りたいのですが、
その手前の段階として・・・
自分で作成して接続ポイントを付加した図形はconnectsコレクションを取得すると一つの接続に対してconnectオブジェクトを複数持っているのですが、
visioの図形は一つの接続に対して一つのオブジェクトしか持っていません。
この違いは何に起因するのでしょう?(・・)

02: 名前:管理人投稿日:2000/04/13(木) 17:50
コネクターのConnects.Countのことでしょうか?
FromConnectsとConnectsはご存知ですよね?
う〜ん・・・何かサンプル図面でも有ればアップしていただけませんか?

03: 名前:Licca 投稿日:2000/04/14(金) 09:19
おはようございます。

>コネクターのConnects.Countのことでしょうか?

ConnectオブジェクトはFor each文でないと処理できないみたいなんですが・・・

>FromConnectsとConnectsはご存知ですよね?

はい。

>う〜ん・・・何かサンプル図面でも有ればアップしていただけませんか?

アップしておきます。

よろしくお願いします。(_ _)

04: 名前:管理人投稿日:2000/04/14(金) 16:26
自作ShapeのマスタであるMaster.9の接続ポイントにベクトルが設定されていました。
このベクトルを「無し」にすることで正常?な値が戻るようになります。
恐らくベクトルも一つで数えているのでしょう(未確認)
接続ポイントのベクトルについてはDVSの156ページに詳しく記載されています。

>ConnectオブジェクトはFor each文でないと処理できないみたいなんですが・・・
Set consObj = shpObj.Connects
for j=consObj.Count to 1 step -1
  ・
  ・
で私は処理できましたが・・・?

しかし、接続ポイントにベクトルを持たせるなんて・・・
VISIO2000・・・まだまだ謎が多そうですね。
良い勉強になりました。

(´ー`)y−~~ でわでわ

■トップに戻る リロード  単独スレ表示



693: [リンクを破棄します]ダイアログを出さない方法  全レス

01: 名前:こうち投稿日:2000/04/13(木) 15:46
お久しぶりです。(この地で安住できるのでしょうか...)

ステンシルからドロップした図形を
VBAからShape.Ungroupでグループ解除しようとすると
例の[この操作はオブジェクトとマスタとのリンクを破棄します]
ダイアログが出てしまいます。
このダイアログを回避する方法をどなたかご存じ有りませんか?

02: 名前:かど 投稿日:2000/04/13(木) 17:02
かどです。

Shape.Ungroup する前に Shape.Master.Delete すると
少なくともメッセージは出ませんでした。

破棄される運命のシェイプでしょうから Master がなくなっても
良いのかな?

03: 名前:管理人投稿日:2000/04/13(木) 17:54
AlertResponseプロパティでダイアログへの応答を自動化できます。
  ・
  ・
Visio.Application.AlertResponse = 1
shpObj.Ungroup
Visio.Application.AlertResponse = 0
  ・
  ・
AlertResponseプロパティの詳細についてはオンラインヘルプをご参照ください。

04: 名前:こうち投稿日:2000/04/14(金) 12:31
感謝,感謝。

かどさん,管理人さん ありがとうございました。
どちらもうまくいきました。
押出と上手投げといったところでしょうか。

こういう単純な事でも,いざはまってしまうと
以外とアイデアがわかなくて。
おまけに動作には関係ないところなので
「まあ[ok]クリックしてもらえばいいか」なんて
ごまかしてしました。

やはりこういう場所があると助かります。

■トップに戻る リロード  単独スレ表示



694: あらかじめ決めてある画像を取込むには  全レス

01: 名前:しんさん投稿日:2000/04/01(土) 14:15
VISIO講座1回目のサンプルでは、画像は都度指定していますが、Accessの
データとして持っている、画像ファイルのパスから自動的に取込む事はできませんか?

Visio.Application.DoCmd(visCmdFileImport)
ファイルのパスを指定しておけば、ダイアログボックスからファイルを指定しなくても
指定したファイルを取込みたいのです。

例えば、社員マスタや商品マスタに画像ファイルのパスを登録しておき、Visio
でリストを作成するときに、社員の写真や商品の写真を取り込みたいのです

02: 名前:管理人投稿日:2000/04/04(火) 14:14
DoCmd(visCmdFileImport)ではダイアログを表示するだけなのでImportメソッドで取り込まれては?
ちなみにビットマップだったら無変換で取り込まれます。
JPEG形式の変換が面倒だったらクリップボード経由で貼り付けるの有りです。


的外れでしたらゴメンナサイ・・・
(´ー`)y−~~ でわでわ

03: 名前:しんさん投稿日:2000/04/09(日) 14:56
管理人さんありがとうございました。
うまくできました。
Importメソッドとは気がつきませんでした。
何せVisioでソリューション開発なんて
初心者なもんですから。
結構使えるもんですね。
これからも、よろしくお願いします。

■トップに戻る リロード  単独スレ表示



695: Deleteイベントで別シェイプを削除  全レス

01: 名前:かど投稿日:2000/04/05(水) 18:22
こんにちは。かどです。

BeforeSelectionDelete()というイベントがあります。このイベントプロシージャの
中で、引数 Selection 以外のシェイプを削除したいのですが、例外処理で
怒られます。

Private Sub Document_BeforeSelectionDelete(ByVal Sel as IVSelection)

dim pShape as Shape

set pShape = ActivePage.Shapes(10) '' ここは任意のSel以外のシェイプ

pShape.Delete ''' ここで例外処理となる

End Sub

Visio6.0 だとイベント処理を無効にすることで逃げられるのですが、
Visio5.0 は上記方法を使ってもダメでした。

何か良い方法をご存知の方はご教授ください。

宜しくお願いします。

02: 名前:管理人投稿日:2000/04/06(木) 03:19
多分、Beforeといっても正真正銘のBeforeじゃないんでしょう・・・
セレクトされたシェイプ以外を削除・・・よろしければ理由を教えてください。

色々考えたんですがチョット強引な方法ですがundoを使って逃げてみました。サンプルは
http://visio-square.hypermart.net/cgi-bin/upload/image/004.lzh [source] [check]
にあるので実際に動かしてみてください。

イベントハンドラを起動(ThisDocument.vEventStart)するとShapeDeleteをトラップするようになります。
シェイプを削除すると発生するBeforeSelectionDeleteでは削除フラグを立てて終わります。
これで終わってはは正常削除!?になってしまうのですがShapeDeleteをトラップしているので
イベントシンクにイベントがあがってきます。シンクでは削除フラグが立っている場合に
削除フラグを落としてから正常削除してしまったシェイプをUndoで復活させ、
本当に削除したいシェイプを削除します。

ここでのミソは削除フラグです・・・
何故かというとフラグが無いと削除イベントの無限ループに陥ってしまうんですよ。
実際に私は酷い目に遭ってしまいました(^^ゞ

ちょっと寝ぼけているので醜いソースだと思いますがお試しください。
#質問の意味を取り違えていたらどうしよう・・・まっ私も良い勉強になったからイイヤ(^_^)


(´ー`)y−~~ でわでわ

03: 名前:かど投稿日:2000/04/06(木) 07:56
おはようございます。かどです。
すいません。多少日本語に不備がありました。
「Selection以外のシェイプも」です。やりたかったことは、シェイプを削除された時
それにくっついているコネクタも一緒に削除したいということです。

だから添付していただいたサンプルは私の主旨と合致しています。
ありがとうございます。(まだためしていませんです、ハイ・・・・。)
だいたいVisioのサンプルやヘルプは Event に関して優しさがありません。
まっ、Eventに限ったわけでもないのですが・・・。:-)

結果はまた報告します。

04: 名前:かど投稿日:2000/04/06(木) 09:30
かどです。

本スレッドの件、うまくいきました。
ただ削除無限ループは、Application.EventsEnabled プロパティをFalseにすることで
逃げるようにしました。

どうもありがとうございました。かなり勉強になりました。

■トップに戻る リロード  単独スレ表示



696: 「オートメーション」を作成しました。  全レス

01: 名前:管理人投稿日:
「オートメーション」がスタートしました。

■トップに戻る リロード  単独スレ表示


ログ検索  前のページ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70  総てのスレッド  スレッド総数 696691 - 696 表示