KoMaDo   VISIO SQUARE : VB/VBA  ■ Headline ■ HOME    

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

21 :任意のシェイプを画面の中央へ(03)  22 :接続ポイントの追加(03)  23 :ページにまつわる増減する情報の記録先(10)  24 :VBAUnit について(06)  25 :ステンシルでのマクロ起動(05)  26 :ステンシル・メニュー「編集」の制御について(04)  27 :MDIフォームのメニューが消える(03)  28 :子シェイプも含めて、全てのシェイプを処理(01)  29 :CreateSelectionの第2引数(04)  30 :UniqueIDが一意になる範囲(03)  31 :データベースレコードの更新をVBAで (19)  32 :FromConnect と Connect の違い(02)  33 :メモリーに入れるか、再計算させるか(01)  34 :カスタムプロパティのダイアログ(03)  35 :カスタムプロパティのユーザ定義セルに値を書き込むには。(02)  36 :VB.netからVISIO2002に作成したバーコードのValueを設定する方法(04)  37 :ゆう(02)  38 :複数のステンシルやソリューションから使用するVBAコード(11)  39 :フィールドのユーザ定義式での文字列の引っ張り方(03)  40 :ステンシルに保存したVBAコードについて(02)  41 :Rowの削除(07)  42 :Geometry1 のセクションについて(17)  43 :JPEGへエクスポート(09)  44 :Visioの処理完了を取得したい。(06)  45 :セルにGUARDがかかっているかどうかの判定方法(08)  46 :ACCESSフォームをVISIO図形から開きたいです(03)  47 :非表示で立ち上げたステンシルの存在確認(09)  48 :指定座標範囲内にあるシェイプの選択について。(05)  49 :VisioからExcelのマクロを使う方法(23)  50 :四角形ツールで表を作成する方法(03)  51 :COMアドイン一覧に表示(07)  52 :シェイプの動的配置をスピードアップするには(05)  53 :Visio2007 Shape Data の Value(03)  54 :IVisEventProc.VisEventProcのsubject引数の中身(06)  55 :DrawLineに、矢印化したいのですが?(03)  56 :object.PrintOut (visPrintAll) で全ページ印刷が出来ない(02)  57 :マスタシェイプに画像を描画(21)  58 :コンボボックスの重複する値(05)  59 :ページの表示角度を変更(12)  60 :VISIO2003 AddOnNameプロパティについて(04) 
ログ検索  リロード  前のページ  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 次のページ  総てのスレッド  スレッド総数 69621 - 30 を表示


21: 任意のシェイプを画面の中央へ  全レス

01: 名前:moto投稿日:2007/09/17(月) 22:06
いつも参考にさせていただいています。
VB2005+Visio2003ActiveXDrawingControlでアプリケーションを
作成しているのですが、ページをスクロールさせて任意のシェイプを
画面の中央に表示する方法が分からずに困っています。
どなたかご教授お願いします。

02: 名前:yoda投稿日:2007/09/18(火) 01:55
私は、ScrollViewTo メソッドで、うまくいったことがあります。
ActiveWindow.ScrollViewTo shp.Cells("PinX"), shp.Cells("PinY")
他にも方法があるかもしれません。

03: 名前:moto投稿日:2007/09/18(火) 21:53
yodaさん、アドバイスありがとうございます。
教えていただいた方法で実現する事ができました。
ちなみにVB2005+DrawingControlでは以下の記述で実現できました。
vdcOCX.Window.ScrollViewTo (shp.Cells("PinX").ResultIU, shp.Cells("PinY").ResultIU)
ありがとうございました。

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



22: 接続ポイントの追加  全レス

01: 名前:ベックらこ投稿日:2007/09/06(木) 06:57
仕事の関係でVISIO2002を使うことになりました。
DrawPolylineで自由な図形を書いた後に、接続ポイントを追加したいのですが、
これをVBAで行う場合は、どのような感じになりますでしょうか。

02: 名前:yoda投稿日:2007/09/06(木) 08:44
マクロの記録で見るのが手っ取り早いと思いますが、
図形のシェイプシートに、Conection Points セクションを加え、
各セルに適当な値を入れるという作業になります。

03: 名前:ベックらこ投稿日:2007/09/07(金) 12:51
ありがとうございます
2002だとマクロの記録が使えないのが辛いですよね
Conection Points セクションでトライしたいと思います。

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



23: ページにまつわる増減する情報の記録先  全レス

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
理解できました。
本当にありがとうございます。

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



24: VBAUnit について  全レス

01: 名前:YU-TANG投稿日:2007/08/30(木) 16:22
はじめまして。

VBAUnit について調べていて、こちらにたどりつきました。

Enter さんの Wiki が現在は閉鎖(?)されているため、以前
依田さんがアップロードされていた翻訳物や試作 GUI 等の
入手経路が無いようです。

もし別の場所で公開されているのをご存知でしたら、教えて
いただけないでしょうか。

02: 名前:yoda投稿日:2007/08/30(木) 20:02
もうないと思います。今は、もっと良いのがあったような気がします。
場所は分かりませんが、さがしてみてね。

03: 名前:YU-TANG投稿日:2007/08/30(木) 21:23
ありがとうございます。
2つほど見つけたので、調査をそちらにシフトしてみようかと思います。

ところで、最初は Visio と直接関係なさそうな話でしたので、トップ
ページのメールアドレスにメールを出してみたのですが、両方とも
(リンクも非リンクも)mstar ドメインから 'Mail Delivery Failure' で
返ってきました。
Gmail だったからでしょうか?

それでは。

04: 名前:みやび投稿日:2007/09/01(土) 18:47
横から失礼します。

私もvbaUnitの翻訳物とサンプルを探しているのですが、
もしよろしければ、YU-TANGさんの見つけられた2件について、
教えて頂けないでしょうか。

よろしくお願い致します。

05: 名前:YU-TANG投稿日:2007/09/03(月) 03:00
レスに気付かなくて遅れました。

検索すればすぐに見つかるものばかりですので、もう必要ないかも
しれませんが、一つは VB Lite Unit です。クラシック VB と VBA を
対象にしているそうです。
もう一つは、自分が Access ユーザーだからピックアップしたのですが、
accessUnit という Access 専用のツールです。
後者についてはいずれ自分のサイトで記事を起こすかもしれませんが、
Access 使いでなければ前者がお求めのものかもしれません。
どちらも vbaUnit よりは最近までメンテナンスされている点で多少
安心ですが、日本語のリソースは(自分の調べた限りでは)皆無に
等しいようです。

逆に、上記以外に VBA でも使えそうなツールをご存知でしたら、
教えていただけると嬉しいです。

それでは。

06: 名前:yoda投稿日:2007/09/03(月) 19:41
条件のまちがいでした。変換ミスに気が付きませんでした。
こんな単語はないのに、なぜこのような変換をするのでしょうね。

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



25: ステンシルでのマクロ起動  全レス

01: 名前:T,T投稿日:2007/08/24(金) 01:39
VISIO講座の第三回そのままなのですが
ステンシルにマクロを組んで、マスターシェープをドラック&ドロップ
したときにマクロを呼びたいのですが、どのような設定をしたら
いいのでしょうか? シェープ名を そのままsub の名前にしても
動かないようですし、よろしくお願いします。

02: 名前:yoda投稿日:2007/08/24(金) 06:07
[シェープ名を そのままsub の名前にしても]は、どういう意味でしょうか?

03: 名前:T.T投稿日:2007/08/24(金) 06:32
質問が分かりにくくてすみません
例えばVisioToolbox.vssで
マスターシェープのプロパティでマスターシェープ名が
Clear Shapeだった場合
ThisDocumentに手入力で
Public Sub ClearShape(visObj As Visio.Shape)
と入れても、シェープのドロップ時にその関数に入って来ない
ということです、なにか設定が抜けているんだと思いますが
その方法がわかりません

使用しているVisioは2000です

よろしくお願いします。

04: 名前:yoda投稿日:2007/08/24(金) 07:30
基本的におかしいような気がします。
一番簡単な方法は、VBAエディターのThisDocumentモジュールに、
ShapeAddedイベントプロシージャを作ることです。
VBAエディタの左側のプロジェクト エキスプローラで、
図面のプロジェクトのThgisDocumentをダブルクリックし、
ThisDocumentがエディター画面に表示されたら、
上の左側のリストボックスから、Documentを選び、
右側のリストボックスから、ShapeAddedを選ぶと、
以下のようなイベントプロシージャができます。
Private Sub Document_ShapeAdded(ByVal Shape As IVShape)

End Sub

05: 名前:T.T投稿日:2007/08/24(金) 23:07
yoda様
初心者にもわかる様に親切丁寧に教えてくださり
ありがとうございました。

当初考えていたものとは少々違いますが
yoda様のご教示されたものの方が
汎用性がありますね

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



26: ステンシル・メニュー「編集」の制御について  全レス

01: 名前:キュー太郎投稿日:2002/02/22(金) 11:22
「あるメニューのボタンを押されると、
選択されているシェイプをマスター・シェイプとしてステンシルに登録する」
という処理をVBAで書きたいのですが、
ステンシルが読み取り専用で開かれている場合に、
エラーになってしまいます。
ステンシルの制御は、
どのようなコーディング(VBA)をすれば良いのでしょうか?

・読み取り専用で開かれているステンシルを「編集」状態にする。
(赤い*の状態)
・ステンシルを「編集」状態から元に戻す。

※オブジェクト・ブラウザの中で、
定数:visCmdStenEditOn(Visio.VisUICmds のメンバ)
という怪しいものを見つけたのですが、
使い方が分かりません。(全然関係が無いかもしれませんが)

VISIO初心者ですので、どなたかアドバイスをお願いします。(とっても困ってます・・・)
部分的なものでも構いません。

02: 名前:Q太郎投稿日:2007/08/08(水) 15:26
これって、出来ないんでしょうか?
1つのステンシルファイルに任意作成のボタンが押される度にシンボルを登録する
VBAを作成しているのですが、同様につまずいています。

どなたか、アイデアはありませんか?

03: 名前:visGeek投稿日:2007/08/08(水) 19:46
一度Closeして、OpenExで
visOpenRW付きで再度開くというのはどうでしょうか。

04: 名前:Q太郎投稿日:2007/08/09(木) 10:46
解決策、ありがとうございます!

テンプレートを使用しているので、ステンシルを閉じた状態で保存し、
再度開いたときにマクロからvisOpenRW付きで開くようにしました。

Private Sub Document_DocumentCreated(ByVal doc As IVDocument)
Application.Documents.OpenEx "xxx.vss", visOpenRW + visOpenDocked
End Sub

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



27: MDIフォームのメニューが消える  全レス

01: 名前:投稿日:2004/03/16(火) 14:24
現在、メニューをもつMDIフォームから子フォームを起動するアプリを作成してます。

その子フォームにもメニューを作成し、右クリックから起動しているのですが、
子フォームがアクティブになると共に親のMDIフォームのメニューバーが消えてしまう
という現象が起きています。
VBのヘルプを見ても、子フォームのメニューも親MDIフォームに表示されると書いてある
のですが、どなたか親MDIのメニューが消えない方法をご存知の方、ご教授お願いします。

02: 名前:mackey投稿日:2007/08/02(木) 02:51
Visio2003は、Version5.0形式で保存出来ますか?
御教授いただければ幸いです

03: 名前:visGeek投稿日:2007/08/02(木) 09:34
Visio2003での過去バージョンでの保存は、2002形式までの対応です。

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



28: 子シェイプも含めて、全てのシェイプを処理  全レス

01: 名前:visGeek投稿日:2007/07/29(日) 16:52
ページ内の全シェイプ(子シェイプも含む)を処理したいと思います。

protected virtual void hoge(Vis.Shapes shps)
{
foreach (Vis.Shape shp in shps)
{
//ここでshpを処理

//shpの子シェイプを処理
hoge(shp.Shapes);
}
}

というメソッドを
hoge(Connect.AppObj.ActivePage.Shapes);
と呼び出しています。

基本的にはうまくいくのですが、この処理を含むカスタムメニュー
(アドオンプログラム)を複数回実行していると、メニューを実行しても
アドオンプログラムが呼び出されなくなってしまうことがあります。
プログラムのスタート部分にブレークポイントを設定して
メニューを実行しても、何も反応しない状態です。

Visio起動後、初めの1回は必ず正常のようです。
正常に実行できる回数は、図面によって異なるようです。
また、何度実行しても正常に実行できる図面もあります。

メニューはCommandBarButtonのClickイベントを使用しています。

何が問題でしょうか?
他に方法はありますでしょうか?

環境:
Visio 2003&C#

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



29: CreateSelectionの第2引数  全レス

01: 名前:visGeek投稿日:2007/07/28(土) 13:18
特定のマスタシェイプが使用されているかどうかを調べたいと思います。

PageのCreateSelectionでvisSelTypeByMasterを渡し、結果の
SelectionオブジェクトのCountを調べればだいたいはうまくいきます。

ただ、そのマスタシェイプがページ直下ではなく
グループの子シェイプとなっている場合に、結果の
Selectionオブジェクトに含まれてこないようです。

CreateSelectionの第2引数が関係していると思うのですが、
何を渡せばよいかご教示いただけますでしょうか。

02: 名前:yoda投稿日:2007/07/29(日) 08:59
その第2引数は、Selectionオブジェクトの、IterationModeプロパティと
同じ物のようですが、以前調べた時も、さっぱりわからなかった、
という記憶だけがあります。

03: 名前:yoda投稿日:2007/07/29(日) 09:06
VisioSDKのCode Librarianに、IterationModeのサンプルがありますので、
ご覧になってはいかがでしょう。

04: 名前:visGeek投稿日:2007/07/29(日) 10:39
情報、ありがとうございます。
サンプルを見てもやはり分かりませんでした。

PageのCreateSelectionでは
Page直下のオブジェクトしか返されない仕様なのかもしれませんね。

他の方法で実装しました。

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



30: UniqueIDが一意になる範囲  全レス

01: 名前:kei投稿日:2007/07/20(金) 11:38
こんにちは。
UniqueIDで取得できる一意のIDですが、これは同ページ内で一意なのでしょうか。
それともドキュメント内で一意になるのでしょうか。
ヘルプには「その他の図面内にある図形にはすべて、異なる ID が割り当てられます。」と
あるのですが、その他の図面内というのがどこまでの範囲かわかりませんでした。

02: 名前:yoda投稿日:2007/07/20(金) 12:58
ヘルプによれば、ページに限定されるようです。
もっと、一意のものがほしい場合は、GUIDを作ることになるのでは、
ないかと思います。そのためには、Page.ShapeIDsToUniqueIDs メソッド
をしらべると、良いと思います。

03: 名前:visGeek投稿日:2007/07/21(土) 20:13
ヘルプに記載されている「その他の図面内にある図形」
という表現は「図面内にあるその他の図形」という意味だと思います。
そうだとすると、ドキュメント内では一意になりそうです。

また、UniqueIDの中身がGUIDである以上は
ドキュメントをまたがっても一意になると推測します。

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


ログ検索  リロード  前のページ  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 次のページ  総てのスレッド  スレッド総数 69621 - 30 を表示