KoMaDo   VISIO SQUARE : VB/VBA  ■ Headline ■ HOME    

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

401 :チャイルドウインドウを非表示(08)  402 :VisioファイルをVBで操作する最初の段階(03)  403 :ツールバーの制御について(01)  404 :図面背景色の変更(03)  405 :ThisDocumentの操作の方法について(03)  406 :シェイプが表示中であるかどうかの判断(03)  407 :アドインのインストーラ作成(01)  408 :複数ファイルの読み込み(02)  409 :ヒロ(03)  410 :カスタムプロパティ(04)  411 :SVGコンバータforVisioをVBAから動かすことができるでしょうか?(03)  412 :ステンシルへの追加(04)  413 :VBAで複数ファイル取得(04)  414 :VBでVISIOのイベントを取りたい(01)  415 :初心者(01)  416 :ツールバーにオリジナルボタンを追加する(01)  417 :ページの挿入位置(13)  418 :全画面表示中にマクロを実行させたい(06)  419 :アクティブドキュメントについて(02)  420 :アドオンからスレッドを起こした場合の動作(01)  421 :シェイブのカスタムプロバティーの書き出し(06)  422 :グループ化を禁止する方法(05)  423 :VB Shapeで選択した範囲のコントロールの個数を取得するには(02)  424 :定義されていません。(Error 35)(03)  425 :UMLシーケンス図読み込み方法について(質問)(03)  426 :シェイプのテキストのフォント名とサイズ(06)  427 :VisioVBA の動作に必要なDLL(01)  428 :ツールバーのボタン (03)  429 :visioのヘッダーフッターについて(03)  430 :プリンタの設定について(02)  431 :グループ化したシェイプのオブジェクト情報を変更する(03)  432 :LockPinX Y の数式を変化させたい(04)  433 :シェープの選択(03)  434 :データベースリンク図形のリフレッシュ(01)  435 :Visioでのマクロの登録(07)  436 :データベースのプロパティのVBAでの取り出し方(01)  437 :UMLクラス図のプロパティ設定(01)  438 :Excelのデータを取り込むには?(03)  439 :マスタシェイプへの変更が反映されない(03)  440 :UNDOの実行(05) 
ログ検索  リロード  前のページ  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 次のページ  総てのスレッド  スレッド総数 696401 - 410 を表示


401: チャイルドウインドウを非表示  全レス

01: 名前:CHERRY投稿日:2003/04/01(火) 08:50
Visioにて表示されるチャイルドウインドウをアドオンから
非表示にしたいと思いますが、
ウインドウオブジェクトのVisibleプロパティでFALSEを
設定することで可能でしょうか。
現状、その方法でステンシルのウインドウを非表示に
しようとしていますが、ウインドウが非表示になりません。

ウインドウオブジェクトのWindowHandle32から、
ウインドウハンドルを取得し、Win32 APIのShowWindow()を
使用した場合、ウインドウは非表示とならず、
ウインドウの中身が非表示となります。(枠が残る)

どなたか、ウインドウを非表示にする方法を
ご存知の方がおられました、ご教示いただけませんか?

02: 名前:なか投稿日:2003/04/01(火) 10:18
これだとステンシルのウインドウなども表示したままではないですか?
ウインドウハンドルを取得してShowWindowでウインドウを非表示にするやり方はあってます。
但し、ウインドウオブジェクトのWindowHandle32で取得できるハンドルをそのまま使っても駄目です。
VC++のツールのSpyなどでVisioのウインドウ構造を一度確認すると分かり易いのですが、
ウインドウオブジェクトで返されるハンドルは図面のウインドウのものでチャイルドウインドウのものではありません。
具体的には、ウインドウオブジェクトで取得したハンドルをもとにWin32 APIのGetParent()を使って親ウインドウの
ウインドウハンドルを取得します。このウインドウハンドルがチャイルドウインドウのウインドウハンドルとなります。
後は、このハンドルを使ってShowWindow()を行えばチャイルドウインドウを消すことができます。

03: 名前:CHERRY投稿日:2003/04/24(木) 09:21
ご返答ありがとうございます。
教えていただいた通りにGetParentを使用して、
チャイルドウインドウのハンドルを取得しました。
しかし、ShowWindowのSW_HIDEを使用しても動作的には
以前と同じように『ウインドウのみが残る』状態のままです。。

ためしに他のフラグを試したところ、SW_SHOWMINNOACTIVE
は正しく動作しているみたいですが、SW_HIDEでは
チャイルドウインドウが非表示状態になりません。。。

04: 名前:なか投稿日:2003/04/24(木) 09:40
あれ、私はできましたけど
一応サンプルコード載せときます。
Public Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Sub ShowWindowMacro()

Dim win As Visio.Window

Set win = Visio.Application.ActiveWindow
hwnd = win.WindowHandle32

hwnd = GetParent(hwnd)
Call ShowWindow(hwnd, 5)

End Sub
Sub HideWindowMacro()

Dim win As Visio.Window

Set win = Visio.Application.ActiveWindow
hwnd = win.WindowHandle32

hwnd = GetParent(hwnd)
Call ShowWindow(hwnd, 0)

End Sub

05: 名前:CHERRY投稿日:2003/05/13(火) 22:02
こちらで現象から調べたところ、Visioのフローティングウインドウは3つの
状態があるようで、そのうち1つの状態になった時のみ、ShowWindow()で
非表示にできるようです。
3つの状態は以下の通りです。
@フレームに完全にドッキングしている状態
Aフレームから離れて、完全にフローティングしている状態
Bフレームに上/下/左/右のどれかが面して、”接している”状態

このうち、Bの時のみShowWindowで非表示にすることが出来ました。
その他の場合は、非表示にしたチャイルドウインドウのフレームのみ
が残ってしまう状態です。

なかさんが上記のサンプルで試された時、
チャイルドウインドウはどの状態でしたでしょうか?
(わかりにくい説明で申し訳ありませんが、
 上記説明でご理解いただければ、ご教示いただけませんか。)

06: 名前:CHERRY投稿日:2003/05/13(火) 22:21
ヘルプを見たところ、上記の状態は
@固定ウインドウ/A浮動表示ウインドウ/Bアンカーウインドウ
というらしいことがわかりました。

07: 名前:なか投稿日:2003/05/14(水) 09:24
どのウインドウ状態でもできますけど
ひょっとしてVisioバージョンによってできなかったりするのかな?
ちなみに私はVisio2002です。
それから、Visio図面ファイルのウインドウ以外(マスタシェイプの編集ウインドウ等)
だと上記のやり方では駄目だと思います。

08: 名前:CHERRY投稿日:2003/05/14(水) 11:59
私はVisio2002(SPなし)を使用しています。
開発環境はVC6で、使用言語はC++です。
非表示にする対象のチャイルドウウインドウは図面ファイル以外全て
(アドオンから作成したウインドウ、ステンシルウインドウ等)です。

一度、教えていただいたサンプルをVBAで試して、
もしうまくいけばアドオンからそのVBA側のメソッドを呼び出そうかと
考えています。
なかさんはうまくいっているので、私のコーディングミスの可能性
がありますので、まずは確認してみます。

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



402: VisioファイルをVBで操作する最初の段階  全レス

01: 名前:かわい投稿日:2003/05/14(水) 10:07
Visioで作成したファイルをVBで加工するプログラムを試作しています。
最初の段階であるVisioファイルをVBに関連付ける部分についてですが、
いろいろ調べて次のような要領である事が分かりました。
(1)Dim appVisio As Visio.Application
Visioのオブジェクトを格納する変数を宣言する
(2)次のいずれかで、変数を有効にする
Set appVisio = CreateObject("Visio.Application")
Set appVisio = CreateObject("Visio.InvisibleApp")
Set appVisio = GetObject(, "Visio.Application")
上記の要領でサンプルを作り「開始」すると(1)の箇所で「コンパイルエラー: ユーザ定義型は定義されていません」というメッセージが出て続行不能となります。
・(2)のいずれを使用した場合でも起こります。
・同一のマシンでVisioを予め起動した状態でも試しました。
複数のサイトで調べましたが、上記のエラーに言及するものがなく、コードの書き方以前の根本的な不備(例えばVBに事前に何らかの設定が必要等)によるものではないかと想像しています。

環境は、
OS Windows XP
VB バージョン6.0
Visio 2000 SR1
です。

以上に関連する情報をお持ちの方はぜひご教授願います。
よろしくお願いします。

02: 名前:なか投稿日:2003/05/14(水) 10:27
(1)の場所で「コンパイルエラー: ユーザ定義型は定義されていません」と出るということは、
Visio.Appllicationが定義されていないと言うことです。
で、どうしたら良いかというとメニューの「プロジェクト」−「参照設定」を選択し、
参照可能なライブラリファイルの一覧中にある「Microsoft Visio 2000 Type Library」
をチェックします。(ひょっとすると名称違うかも、取り敢えずVisio2000のタイプライブラリをチェックします)
以上でできるはずです。

03: 名前:かわい投稿日:2003/05/14(水) 10:51
なかさん、早速のご教授ありがとうございます。
無事解決しました。
実は質問する前にじたばたやっていたときにご指摘の「参照設定」ダイアログも確認しておりました。
しかしアルファベット順の「Microsoft Visio...」の群しか見ていなかったために見つけることができませんでした。
改めて見直し「Visio 2000 Type Library [Service Release 1]」を見つけることができました。
中途半端な走査は解決を遅らせるだけですね。
ありがとうございました。

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



403: ツールバーの制御について  全レス

01: 名前:kkk投稿日:2003/05/06(火) 18:34
ツールバーの段数を取得する方法はありますか?
もし出来いのであればツールバーの制御はどのように
すればよいですか?
初心者なので分からない点が多いですがよろしくお願いします。

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



404: 図面背景色の変更  全レス

01: 名前:CHERRY投稿日:2003/04/17(木) 16:22
図面の背景色を変更したいのですが、
『ツール』メニュー⇒『オプション』⇒『表示』タブ⇒
『色の設定』の「図面ページ」の色を変更した場合に
得られる効果と同様の操作を
アドオンから実行することは可能でしょうか。
また、可能であればその方法についてご存知の方、
よろしければご教示いただけませんでしょうか。

02: 名前:なか投稿日:2003/04/18(金) 10:05
アドオンから「図面ページ」の色の変更ですか
オブジェクトのプロパティやメソッドでこれを実現するものは無いみたいです。
レジストリにある「図面ページ」の色を変更してやれば、変更は可能ですが、
既にVisioが起動している場合は駄目(レジストリを書き換えてもVisioが読
み込んでくれないから)さらに、終了時レジストリの情報も書き換えられる。
後は、人が手で設定するように、DoCmdオプションダイアログを開いて、
「表示」タグを押し、「図面ページ」ボタンを押して、色を選択し「OK」ボタンを
押すといった操作を然るべきウインドウにメッセージを投げると言う方法で
行うぐらいです。(ほとんど無理ですね)

03: 名前:CHERRY投稿日:2003/04/18(金) 15:15
なかさん、ご返答ありがとうございます。
そうですか、、、だめですか。。。
背景に四角いシェイプを置くとか、べたな方法に
なっちゃいますねぇ。。
別の方法を考えてみることにします。
ありがとうございました。

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



405: ThisDocumentの操作の方法について  全レス

01: 名前:sugimoto投稿日:2003/04/03(木) 12:22
杉本と申します。Visio VBAでのThisDocumentオブジェクトを
VBで操作するためにはどうすればいいのでしょうか?
御存知の方お教えください。
宜しくお願いします。

02: 名前:なか投稿日:2003/04/04(金) 08:39
VBAでのThisDocumentオブジェクトと言うのはActiveDocumentのことです。
Applicationオブジェクトを取得しActiveDocumentプロパティで取得した
Documentオブジェクトに対し操作するだけです。

03: 名前:sugimoto投稿日:2003/04/08(火) 11:23
なかさん。杉本と申します。
アドバイスどうも有り難うございました。

お礼のお返事が遅れて申し訳ありませんでした。

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



406: シェイプが表示中であるかどうかの判断  全レス

01: 名前:CHERRY投稿日:2003/03/05(水) 15:23
シェイプが表示中の画面領域内に含まれるかどうかを判断したいのですが、
(シェイプが非表示/表示になっているわけではなくて)
シェイプオブジェクトにそのようなプロパティが存在するのでしょうか。
また、存在しない場合、表示中の画面(図面)領域を取得する方法が
存在するのでしょうか。
どなたか、ご存知の方がおられましたらご教示願えませんでしょうか。

02: 名前:なか投稿日:2003/03/06(木) 09:01
拡大表示している際にシェイプが画面上で見えているかどうかを調べた
いとういうことですよね。
WindowオブジェクトのGetViewRectメソッドというのがあるのですが
これが使えるのではないでしょうか?

03: 名前:CHERRY投稿日:2003/03/31(月) 09:37
なかさん、いつもありがとうございます。
早速試してみます。
ありがとうございました。

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



407: アドインのインストーラ作成  全レス

01: 名前:CHERRY投稿日:2003/03/31(月) 09:36
インストールシールドで作成したインストーラを使用して、
アドインをインストールしようと考えています。

通常、手動でインストールする場合は、アドインを
コピー後にVisioのメニュー『ツール』⇒『マクロ』⇒『COMアドイン』
から、コピーしたアドインを実行する操作が最初に
必要だと思います。

この処理をインストーラから行うことは可能でしょうか?
どなたか、ご存知のかたがおられましたら、
ご教示いただけませんか?

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



408: 複数ファイルの読み込み  全レス

01: 名前:sugimoto投稿日:2003/03/20(木) 12:53
杉本ともうします。

複数のVisioファイルを読み込み、解析、出力するツールを作っているのですが、
読み込みのところでつまずいています。
どのオブジェクトのどのプロパティをloop(或いはFor)で回せばよいか、
わからないのですが、御存知の方おられましたらご教授お願いします。

02: 名前:かど投稿日:2003/03/27(木) 18:24
ども。かどと申します。
Visioファイルの読み込みが、「複数のVisioを開いた状態で個々の図面に対して
解析、出力を行いたい」という意味であれば、

Application.Documentsコレクションが図面のコレクションですので、
これをループすれば操作可能です。

既に解決されているかもしれませんが・・・。

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



409: ヒロ  全レス

01: 名前:グループのメンバー情報の取得方法投稿日:2003/03/16(日) 15:43
どなたか御存じでしたら、お助け願います。

図面上で選択されたシェイプを取得するのに、Set shpObj=ActiveWindow.Selection
などを使うかと思いますが、グループ化されたメンバー(子)を画面上で選択した状態で、そのシェイプを取得する方法がわかりません。
どなたか、お分かりになりませんか?

また、親シェイプ得るメソッドparentの逆で、子シェイプ(メンバー)シェイプを獲るメソッドってあるのでしょうか?

色々とヘルプを見たのですが、わからなくて・・
宜しくお願いします。

02: 名前:yoda投稿日:2003/03/22(土) 17:32
...Selection.Duplicateとすると、子シェイプがグループの外へ
複写されますが、それは、shapeとして扱えるので、
何とかならないでしょうか?

03: 名前:yoda投稿日:2003/03/27(木) 10:25
アクションセクションでCallThis関数を使うと、右ボタンでポップアップ
メニューを選択しなければなりませんが、子シェイプが取得できます。

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



410: カスタムプロパティ  全レス

01: 名前:ギレ投稿日:2003/03/18(火) 21:40
もしかしたら既出の質問であったら申し訳ございません。
Visioの方は結構いじくっていたのですがVBAを利用するのは当方初めてです。
来週月曜日までに作らなければならないツールがあるので焦っています^^;

1、新しく定義したステンシルにカスタムプロパティを付け加えたのですがVBA上でカスタムプロパティの値を取得することはできるのでしょうか?

2、データを取得し,処理を行った後にそういった形式のマスタをドロップして新しいページに図形を描画する方法がわかりません。
いろいろといじくってみたのですが・・・。

非常に簡単な質問で失礼かもしれませんがもしわかれば教えて下さい。

環境はwin2000&Visio Ver2002です。

02: 名前:ギレ投稿日:2003/03/18(火) 22:04
すいません掲示板を探してみたところ1の質問はすでに既出でした。
申し訳ございません。

03: 名前:ギレ投稿日:2003/03/18(火) 23:20
既出のコードを次のように使用してみたんですがうまくいきません。

Set objCell = objShape.Cells("Prop.function.Value")
string = objCell.Formula

functionというのはカスタムプロパティの名前です。
EOFエラーですと言われヘルプも参照できないようで数回いじくっていると
Visio自体が落ちてしまうという不思議な現象が発生してしまいます。
原因がわかる方いましたら教えてください。

04: 名前:なか投稿日:2003/03/19(水) 09:04
気になるところは
string = objCell.Formula
^^^^^
StringはVBAでは予約語となっているので変数として扱うことはできません。
(しかし、EOFエラーと言うメッセージは出ないような気がするけど)

取り敢えずサンプルコードも付けときます。
Sub GetPropValue()
Dim objWin As Visio.Window
Dim objShape As Visio.Shape
Dim objCell As Visio.Cell
Set objWin = Visio.Application.ActiveWindow
Set objShape = objWin.Selection.Item(1)
Set objCell = objShape.Cells("Prop.function.Value")
value = objCell.Formula
MsgBox value
End Sub

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


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