KoMaDo   VISIO SQUARE : VB/VBA  ■ Headline ■ HOME    

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

441 :プリンタの選択(02)  442 :複数シェイプを図面に追加した場合(05)  443 :Visio2002ツールバーのアイコンについて(03)  444 :シェイプの色をショートカットで変更したい(06)  445 :Undoメソッドで例外が発生します。(04)  446 :図面にステンシルファイルをドッキングさせたい(05)  447 :カーソルの座標への移動(05)  448 :VBAでステンシルを編集モードにする(03)  449 :BeforeShapDeleteイベントの作成方法について(03)  450 :ページ挿入される前のイベントを取得したい(03)  451 :VBAでbinファイルを読めるようにしたい(01)  452 :VBAソースとシート上のデータを分けたい(04)  453 :グループ化されたシェイプのメンバシェイプ削除禁止について(03)  454 :カスタムツールバーの追加(01)  455 :接続情報の取得(03)  456 :AlertResponseについて(01)  457 :VBデザイナ画面で出てくるツールバーを消したい(04)  458 :ページ数の表示方法(05)  459 :シェイプシート(04)  460 :文字の行番号について(07)  461 :VBstrの使い方教えて (04)  462 :クリップボードの操作(01)  463 :ForeignObjectについて(02)  464 :アクティブウィンドウの制御(01)  465 :マクロについて(01)  466 :コントロールOptionButtonのon/off、グループ化について(01)  467 :グループ化されたシェイプの背景色を変更する方法(05)  468 :グループのピン座標(08)  469 :VisioのWindowtitileについて(02)  470 :図形の合成について(05)  471 :座標、原点を取得するには(07)  472 :文字の位置について(03)  473 :CADのzukei (01)  474 :シェイプ中央に接続されたコネクタの取得(01)  475 :グループ化されたオブジェクトから接続先を取得する方法(02)  476 :子シェイプから親のグループシェイプオブジェクトを取得する方法(04)  477 :ショートカットメニューhe追加するには?(01)  478 :ポリラインの座標値(11)  479 :geometry数分のデータを取得したいのですが・・(03)  480 :VBAで表に行を追加するには?(03) 
ログ検索  リロード  前のページ  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 次のページ  総てのスレッド  スレッド総数 696441 - 450 を表示


441: プリンタの選択  全レス

01: 名前:ゴン投稿日:2003/01/15(水) 16:18
VBA もしくはVSLの処理で内部的にプリンタの出力先を変更したいのですが
どのようにすれば出来るかご存知の方教えてください。

02: 名前:なか投稿日:2003/01/16(木) 09:27
ネット検索で以下のキーワードで検索してみて下さい。
OpenPrinter,GetPrinter,SetPrinter
参考になる情報が得られると思います。

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



442: 複数シェイプを図面に追加した場合  全レス

01: 名前:CHERRY投稿日:2002/12/05(木) 11:37
現在、シェイプが図面に追加されたときのイベントをCOMアドインで
フックし、追加したシェイプを操作しています。

フックしているイベントは(visEvtAdd | visEvtShape)で、
ActiveWindow.Selectionで追加したシェイプを取得しています。
しかし、この方法では複数のマスタシェイプを選択し
図面にドロップしたとき、最後の1つしか
COMアドインから取得できません。

複数のシェイプを図面にドロップした場合、(visEvtAdd | visEvtShape)
イベントフックで、ドロップした全てのシェイプを取得する方法に
ついて、上記以外の方法をご存知の方がおられましたら
ご教示願えませんか。よろしくお願いいたします。

02: 名前:なか投稿日:2002/12/05(木) 12:14
>しかし、この方法では複数のマスタシェイプを選択し
>図面にドロップしたとき、最後の1つしか
>COMアドインから取得できません。
イベントが一度しか発生しないんですか?
VBAだと複数回発生しますが

図形を図面に貼り付けた後に発生するイベントとして
SelectionAddedイベント(visEvtCodeSelAdded)
というのもあります。
しかし、このイベントもマスタシェイプをドロップしたときは
ShapeAddedイベントと同じ動きをしていたから駄目かも

03: 名前:CHERRY投稿日:2002/12/05(木) 16:16
なかさん、ご返答ありがとうございます。

>イベントが一度しか発生しないんですか?
>VBAだと複数回発生しますが
確認したら、複数回発生しているようです。
どうやら、問題は
そのイベントフック後にVisioWindow.Selection
で対象のシェイプを取得しようとしているため、
常に同じシェイプしか取得できていなかったようです。

VBではShapeAddedイベント発生時に、
フックした関数の引数に対象のシェイプ
(追加されたシェイプ)が渡されてくるようですが、
VCの場合、追加されたシェイプの取得方法がわかりません。

追加されたシェイプを取得する方法として、
良い方法はないでしょうか。

04: 名前:なか投稿日:2002/12/06(金) 10:08
アドインを作ったことないのでなんとも言えませんが、
イベントをシンクオブジェクトのイベントプロシージャで
フックするなら追加されたシェイプ情報も関数の引数に
付加されています。

05: 名前:CHERRY投稿日:2003/01/15(水) 17:32
なかさんご返答ありがとうございます。
ご指摘の通り、イベントプロシージャに渡される引数のメンバから
イベント対象のオブジェクトを取得することが出来ました。

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



443: Visio2002ツールバーのアイコンについて  全レス

01: 名前:TakaTaka投稿日:2003/01/09(木) 10:42
Visio2002でカスタムツールバーを作成し、
アイコンを読み込んでそのアイコンをクリックするとマクロを実行させようとしています。
しかしアイコンを読み込むと真っ黒な四角で表示されてしまいます。

マクロ自体は実行可能です。
Visio2000ではちゃんとアイコンが表示されます。

プログラムコードは開発者用リファレンスの例をそのままです。
どなたかご存知であれば解決方法ご教授願います。

開発環境は
 Visio2002(Std
 Windows2000(Pro
です

02: 名前:名無しさん投稿日:2003/01/09(木) 18:59
私は32x32と16x16それぞれ16色で作ってます。

03: 名前:TakaTaka投稿日:2003/01/10(金) 09:23
おっしゃる通り
16×16の16色ならちゃんと表示できました。
32×32の16色だとやはり真っ黒になっちゃいます。

とりあえずは解決したのでレス入れます。

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



444: シェイプの色をショートカットで変更したい  全レス

01: 名前:ぽよよん投稿日:2002/12/29(日) 23:51
シェイプは1種類で,色を六色使い分けて図面ページを作りたいんですが,
毎回,上部ツールバーにアクセスする作業を簡素化したいと考えています.

よろしければ,どなたかレスお願いします.

02: 名前:yoda投稿日:2003/01/07(火) 14:03
形は1種類でも6色のシェイプを登録しておいてはいかがでしょう?

03: 名前:ryo投稿日:2003/01/08(水) 00:29
シェイプシートだけでも出来そうですね。
それとも色情報をDBから引っ張ってくるとかですか?

04: 名前:ぽよよん投稿日:2003/01/08(水) 14:33
説明が不足していて申し訳ありません.

特定の6色のシェイプが欲しいのではなく,
特定の色への変更を容易に行いたいと考えています.

色の変更をパレットで行うのではなく,
シェイプを右クリックして,直接特定の六色を指定できるようなものや,
シェイプがアクティブになっているときにCtrl+Rで赤にできるようなもの
を想定しています.

よろしけば,再レスお願い致します.

05: 名前:ryo投稿日:2003/01/08(水) 17:40
サンプルを作ってシェイプシートのイメージを↓にUPしましたのでご覧下さい。
http://www.mster.co.jp/visiosquare/cgi-bin/imgboard/vis-img/img20030108173927.jpg [source] [check]

06: 名前:ぽよよん投稿日:2003/01/10(金) 00:46
有難うございました.
質問する掲示板が違っていました.まだまだ勉強不足ですぅ.

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



445: Undoメソッドで例外が発生します。  全レス

01: 名前:yoda投稿日:2003/01/02(木) 17:56
あけましておめでとうございます。
今年もよろしくお願いいたします。
Visio2000で
sub test()
Visio.Application.Undo
end sub
をVisioの図面が前面に表示された状態で、
メニュー、ツール/マクロから実行すると例外エラーが発生します。
どうしたら、よいか教えていただけませんか?
VBAエディターの画面から実行すると正常に動作しますし、
Excelでは、エラーになりません。

02: 名前:yoda投稿日:2003/01/09(木) 02:22
スミマセン、過去ログがありました。
http://www.mster.co.jp/visiosquare/cgi-bin/visbbs/abi.cgi?fo=auto&tn=0259 [source] [check]

03: 名前:なか投稿日:2003/01/09(木) 09:40
その過去ログでは解決してなかったような
でも、過去ログで提案したメッセージをなげる方法でUndoする
ことは可能でした。もう解決しているかもしれませんが、
一応サンプルコードを記述しておきます。
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 UndoTest()
hwnd = Visio.Application.WindowHandle32
Call PostMessage(hwnd, &H111, &H3F9, hwnd)
End Sub

Sub RedoTest()
hwnd = Visio.Application.WindowHandle32
Call PostMessage(hwnd, &H111, &H3FA, hwnd)
End Sub

04: 名前:yoda投稿日:2003/01/09(木) 14:27
レスどうもありがとうございます。とても助かりました。

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



446: 図面にステンシルファイルをドッキングさせたい  全レス

01: 名前:杏仁豆腐投稿日:2002/12/10(火) 18:10
初めまして。
Visio初心者ですが、いきなり詰まってしまいました。

AccessからVisioを呼び出して使おうとしているのですが。
Accessから新規の図面ファイルを作成して、
そこに既成のステンシルファイル( .vssファイル)を同じウィンドウに
ドッキングさせた状態で表示させたいのですが、
どうしても別ウィンドウになってしまいます。

ヘルプを見ると、OpenEx メソッドでvisOpenDockedを指定する
ように書いていますが、やっぱり別ウインドウになります。
Visio単体で同じようにマクロで試したところ、こちらはちゃんと
同じウィンドウにドッキングされて表示されました。
Accessからだと、visOpenMinimizedも効かないような気がするのですが、
外部からはOpenExメソッドは使用できないのでしょうか?

02: 名前:なか投稿日:2002/12/11(水) 09:52
新規の図面ファイルに既存のステンシルファイルをドッキングさせたい
だけなら、新規の図面ファイルに既存のステンシルファイルをドッキング
させたテンプレートファイルを作成して、Aceessがらそのテンプレート
ファイルを追加するようにしてはどうですか?

03: 名前:杏仁豆腐投稿日:2002/12/11(水) 18:41
レスありがとうございます。
基本のテンプレートみたいなのを用意して、人によって
必要なステンシルを足したり引いたり(引くのはあんまりないですが)
してみたかったんです。
確かにお教えいただいたように最初から必要であろうだけの
.vstファイルを用意してもあんまり手間は変わらないかもしれないですね。
ただ、問題がここだけで済むのか、ちょっと怖い風味です・・・。

04: 名前:なか投稿日:2002/12/12(木) 15:22
Visio Professional 2002 SR-1だとAccessのマクロでVisioを起動して
新規図面を作成し、ステンシルファイルをドッキング状態で開くことできます。
他のバージョンはわかりませんが取り敢えずご報告まで

05: 名前:杏仁豆腐投稿日:2002/12/19(木) 14:48
レスが遅くなってしまってすみません。
出来る、ということで色々と試していった結果、いつの間にか
ドッキングして開けるようになりました。
なんで今まで出来なかったのかは今となってはよく分からないのですが、
どうもライブラリの参照設定がおかしかったようです。
お騒がせしてすみません。
ありがとうございました。m(__)m

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



447: カーソルの座標への移動  全レス

01: 名前:ぶう投稿日:2002/12/11(水) 15:32
VBAからカーソルを図形の左上座標に移動したいのですが、
やり方をご存知ありませんか?
(補足:自動的にカーソル位置から画像キャプチャするためです)
また、
Visioのメインフレーム(外枠)をVBAから最大化したいのですが、
今ひとつ、わかりません。
メインフレームのサイズはVBAからは変更できないのでしょうか?
よろしくお願いします。

02: 名前:なか投稿日:2002/12/11(水) 16:19
カーソルの移動もメインフレームのサイズ変更もAPI関数を使えばできます。
以下はサンプルコード

Public Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
Public Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long

Sub MoveCursor()
x = 0 'x座標
y = 0 'y座標
Call SetCursorPos(x, y)
End Sub

Sub MaximizeWindow()
Call ShowWindow(Application.WindowHandle32, 3)
End Sub

03: 名前:ぶう投稿日:2002/12/11(水) 17:45
なかさん、ありがとうございます。
メインフレームの件はバッチリでした。
カーソルの移動の件は、私の説明不足でした。

図面(ページ?)上の図形の左上に移動したいのですが、
Windowsからの座標位置の取得の仕方がわかりません。
GetWindowRect で取得するのかな???と、闇雲にやってみましたが、
いまいち、いまに、、、、いま十ぐらいです。
イメージ的には、エリアで画像を切り出すと、いう感じなのですが。。。
説明がショボくてすみません。
よろしくお願いします。

04: 名前:なか投稿日:2002/12/12(木) 09:32
〉GetWindowRect で取得するのかな???
GetWindowRectで取得すればOKですが
ActiveWindow.WindowHandle32で取得できる
ウインドウハンドルはMDIのチャイルドフレームです。
図面上の図形の位置を直接取得することは基本的に不可能です。
但し、図形がテキスト編集状態(テキストウインドウ状態) なら
そのテキストウインドウを取得して、ウインドウ座標を取得することは可能です。
(但し、図形とテキストウィンドウが同じでないと意味がない)
後は、地道に計算するしかないと思います。

05: 名前:ぶう投稿日:2002/12/12(木) 11:44
ご回答ありがとうございました。
>図面上の図形の位置を直接取得することは基本的に不可能です。
そんな気はしたんですが・・・。すっきりしました。
これで、しばらくVisioのVBAから開放されます(ホッ♪)
ありがとうございました。

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



448: VBAでステンシルを編集モードにする  全レス

01: 名前:yoda投稿日:2002/12/04(水) 14:03
VBAでステンシルを編集モードにする方法はないでしょうか?

VBAでステンシル内のシェイプを編集しようとしていますが、
あらかじめ手でステンシルを”編集”モードにしておかないと、
変更されないようなのです。
保存の方は、編集モードになっていればSaveメソッドで可能なのですが。

02: 名前:なか投稿日:2002/12/04(水) 15:02
ステンシルファイルを編集モードで開くことはできますが、
開いているステンシルを編集モードにする方法はないみたいですね。
手で編集モードにするのが面倒ならステンシルを閉じてから
編集モードで開き直せばいいのではないですか?
ステンシルファイルを編集モードで開くには
docs.OpenEx "ステンシル.vss", visOpenDocked + visOpenRW
で開きます。

03: 名前:yoda投稿日:2002/12/04(水) 15:40
早速のレスありがとうございます。
早速試して見ました、うまくゆきました。

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



449: BeforeShapDeleteイベントの作成方法について  全レス

01: 名前:ぶう投稿日:2002/11/26(火) 17:18
BeforeShapDeleteイベントと使用できるようにSink(?)したいのですが、
その方法が皆目わかりません。
AddAdviseメソッドのヘルプを読んでも、どこに何を定義すればいいのかわかりません。
出来れば、全ての通知を受け取って内部で切り替えて使用する方法が知りたいのですが。。。

Visio2000 SR1をWindows2000で使用しています。
よろしくお願いします。

02: 名前:なか投稿日:2002/11/27(水) 15:13
AddAdviseメソッドは使ってないんですが以下のようにしても
BeforeShapDeleteイベントを受け取ることができます。
(この例ではDocumentsコレクションのBeforeShapDeleteイベントを取得
するようにしています。)

Option Explicit
Private WithEvents Documents As Visio.Documents

Private Sub Document_DocumentOpened(ByVal doc As IVDocument)
Set Documents = Visio.Application.Documents
End Sub

Private Sub Documents_BeforeShapeDelete(ByVal Shape As IVShape)
MsgBox "BeforeShapeDelete"
End Sub

注意:以上のコード作成してすぐには、BeforeShapDeleteイベントは
受け取れません。一度図面ファイルを開き直す必要があります。

03: 名前:ぶう投稿日:2002/11/27(水) 16:56
ありがとうございました。
出来ました。ここ2,3日の問題一気に解決です。
また、よろしくお願いします。

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



450: ページ挿入される前のイベントを取得したい  全レス

01: 名前:なか投稿日:2002/11/20(水) 11:46
Visioでページ挿入すると必ず最後尾にページ挿入されてしまい、
毎回ページの移動で任意の位置まで移動しないといけなくって
すごく面倒な思いをしています。
そこで、マクロを使って任意の位置にページ挿入できるようにしたの
ですが、これをマクロではなくイベントでもできないかと思っています。
AddPagedイベントでは既にページが挿入された後なので、
BeforeAddPageイベントみたいなものってないのでしょうか?
もしくは、イベントを自作することは可能なのでしょうか?
(おそらく、無理そう)

02: 名前:yoda投稿日:2002/11/24(日) 09:20
イベントを自作すればできるかもしれません。
わたしは、
http://homepage1.nifty.com/CavalierLab/lab/vb/clsmdl/event.html [source] [check]
で勉強して、シェイプ名を変更する前のシェイプ名を取得するために、
じさくしてみました。

03: 名前:なか投稿日:2002/11/25(月) 08:50
レスありがとうございます。
早速試して見ます。

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


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