KoMaDo   VISIO SQUARE : VB/VBA  ■ Headline ■ HOME    

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

291 :VBAによるページ設定およびグリッド/ルーラー設定について(01)  292 :シェイプをダブルクリック時のイベント(02)  293 :アドインのイベントが変です・・・(04)  294 :レイヤーの表示/非表示の切り替え(08)  295 :シェイプを右クリックした時のカスタムのメニュー(アドオン)(05)  296 :Visio2003の作業ウインドウに自作ヘルプの目次を表示させたい。(01)  297 :PNT関数について(04)  298 :Unicodeに変換した文字をカスタムプロパティに設定したい(10)  299 :特定のシェイプを選択(06)  300 :カスタマイズしたメニューでのチェック表示(08)  301 :BeforeDocumentClose時に渡されるパラメータについて(06)  302 :コネクタの経路取得について(05)  303 :マクロの実行について(04)  304 :特定のシェイプを削除されないように保護する方法(10)  305 :Visioのキーイベント取得について(07)  306 :複数のブックのデータを取得する(03)  307 :シェイプの選択状態の解除(03)  308 :Visioへ値を渡す方法(04)  309 :DXFの変換(09)  310 :visio終了処理の回避(04)  311 :vb.netのフォームにvisioの図貼れますか(01)  312 :図形のテキスト取得(03)  313 :VCからVisioのマクロを起動したいのですが・・・(12)  314 :IMEの入力モードが無効になってしまいます。(03)  315 :モードレスにおけるシェイプシートの制御(07)  316 :コネクタについて(07)  317 :Visio2003+ステンシルの参照設定+読み込み専用=エラー?(06)  318 :グループの中のシェイプ取得について(03)  319 :グループ図形の線の色などを変更する方法(07)  320 :VBとVBAのメリットとデメリット(04)  321 :強制終了された場合のイベント処理(04)  322 :VBAで図形の色を変更する (05)  323 :クリップボードをクリア(06)  324 :CSV出力でエラー(05)  325 :VisioでComment機能(08)  326 :VISIO図面内の1つのシェイプを選択する方法(06)  327 :MDI機能がありますか?(04)  328 :ExcelからVisioへの出力(05)  329 :Visioで。。(07)  330 :VB6からVISIO2003の図形操作かのうですか?(41) 
ログ検索  リロード  前のページ  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 次のページ  総てのスレッド  スレッド総数 696291 - 300 を表示


291: VBAによるページ設定およびグリッド/ルーラー設定について  全レス

01: 名前:イナフ投稿日:2004/08/22(日) 21:53
いつもお世話になっております。

ただ今VB.NETとVISIOアクティブXによる開発を行っております。

VISIOで行えるページ設定をVBAにて行うにはどのようにすれば
よいのでしょうか?

VISIO開発リファレンスを見ながら進めているのですが、
今一よくわかりません。
個別に各プロパティを設定してくのか、VISIOで表示されるような
ページ設定ダイアログを表示できるのか疑問です。
(各プロパティがわからないのですが…)

また同様にルーラーやグリッドも同じ様に困っております。

お教え願えないでしょうか。
よろしくお願い致します。

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



292: シェイプをダブルクリック時のイベント  全レス

01: 名前:あひゃ投稿日:2004/08/22(日) 14:00
いつもお世話になっております。
スレいっぱい立ててすいません・・・

シェイプのActionセルやEventセルに
=RUNADDONWARGS("QueueMarkerEvent","引数")
もしくは
=QUEUEMARKEREVENT("引数")
と記述すると、イベントコードが
(short)Visio.VisEventCodes.visEvtApp
      + (short)Visio.VisEventCodes.visEvtMarker
のイベントを発生することができるそうです。
これで、シェイプをダブルクリックしたときや、
シェイプ右クリック→ショートカットメニュー選択時のイベント
をアドオンやアドインで拾うことができます。

たしかにイベントをひろうことが出来たのですが、
肝心の引数や、何らかのオブジェクト(Shapeオブジェクト?)
を取得することができませんでした・・・

なお、イベントを拾うメソッドの引数は以下の通りです
どの引数に有効なオブジェクトが入っているのでしょうか??
public object VisEventProc(
 short eventCode, ←イベントコード
 object source, ←何かあるが、何にキャスト?
 int eventId,
 int eventSequenceNumber,
 object subject, ←何かあるが、何にキャスト?
object moreInformation ←なぜかnull・・・)
{}
似たような悩みを持つ方おられますでしょうか・・・

02: 名前:あひゃ投稿日:2004/08/22(日) 14:54
すいません、subjectにはVisio.Applicationのオブジェクトが入ってました
これで選択されているシェイプのオブジェクトはとれますよね
良かった、良かった・・・

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



293: アドインのイベントが変です・・・  全レス

01: 名前:あひゃ投稿日:2004/08/19(木) 00:12
C#でVisioのアドインを作っています。Visual Studio2003.NETで作成しています。
Visioのツールバーに自前のボタンを作成し、ボタンを押したイベントを拾って
自前のフォームを表示するようにしています。
そのフォームを閉じたあと、もう一回ボタンを押すと、今度はなにも
反応しなくなります。メッセージループが他のフォームに移ってしまうと、
せっかくAddAdviseメソッドで実装したイベントが失われてしまうのでしょうか??
泣きそうです・・・

02: 名前:yoda投稿日:2004/08/19(木) 02:22
何故でしょうね。
もう一度、AddAdviseメソッド
のHelpの備考を調べては
いかがでしょう。

Visio単独でも、プロジェクトが
リセットされるようなことをすると、
似たようなことが、起こります。

03: 名前:yoda投稿日:2004/08/19(木) 08:45
その他、Persistable プロパティ
のヘルプも、ご参考になるかも
知れません。
<抜粋>
永続しないイベントが存続できるのは、
Event オブジェクト、Event オブジェクト
を含む EventList オブジェクト、または
EventList オブジェクトを含むソース オ
ブジェクトで参照が保持されている間
です。

04: 名前:あひゃ投稿日:2004/08/19(木) 10:19
なるほど!!かなり参考になりました。^^
お察しのとおり、オブジェクトが破棄されていたのが原因のようでした。
自作ボタンであるCommandBarButtonオブジェクトを参照する変数を
別の場所で宣言することで回避することができました。
どうもありがとうございました〜
しかし、オブジェクトが破棄されるタイミングがよくわかってないです・・・

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



294: レイヤーの表示/非表示の切り替え  全レス

01: 名前:てんてんてん投稿日:2004/08/10(火) 16:25
ご存知の方がいらしたら教えてください。

Visioでレイヤーの表示/非表示を切り替えると
社内用、社外用、…
のように、数パターンのドキュメントになるように作成しています。

複数ページある図面のため、できればマクロで全ページのレイヤーの
表示/非表示を切り替えるようにしたいのですが、うまくいきません。

Layer.Application.Visible に True、False を設定してみたのですが、
表示状態は変わりませんでした。
Shape.Application.Visible でも同様です。

マクロでレイヤーの表示/非表示を切り替える方法を教えてください。
よろしくお願いします。

02: 名前:yoda投稿日:2004/08/10(火) 20:02
Layerオブジェクトの
CellsC プロパティを
使います。
たとえば、
objLay.CellsC(visLayerVisible).Formula = False

03: 名前:yoda投稿日:2004/08/10(火) 20:39
なぜこうするのかは、
多分、ページのシェイプシート
を開くと、そこに、Layersセクション
があることで、わかると思います。
ですから、たとえば、
ActivePage.PageSheet.Cells("Layers.Visible[3]").Formula = True
というのも有効ですが。

04: 名前:わんこ投稿日:2004/08/10(火) 21:27
Dim reiObj As Visio.Layer
reiObj.CellsC(4) = 0
でも、いけるみたいです。

ループで、ページを回してみたら、1ページ目以外は、レイヤの表示のチェックははずれたのに、
図面に図形が表示されたままになってしまうようです。これってバグ(?)なのでしょうか?

ちなみにこんな感じで書いたのですが…。

Sub test()
Dim shpObj As Visio.Shape
Dim pgeObj As Visio.Page
Dim reiObj As Visio.Layer
Dim ii As Integer
Dim i As Integer

For ii = 1 To Pages.Count
Set pgeObj = ThisDocument.Pages.Item(ii)
For i = 1 To pgeObj.Layers.Count
Set reiObj = pgeObj.Layers.Item(i)
reiObj.CellsC(4) = 0
Next i
Next ii
End Sub

05: 名前:yoda投稿日:2004/08/11(水) 06:47
全部きえますよ。
For ii = 1 To Pages.Countは、
For ii = 1 To thisdocument.Pages.Count
としました。

06: 名前:yoda投稿日:2004/08/11(水) 08:33
こちらでも、再現できました。
パラメータを変えた後、
画面をリフレッシュすれば、OK。
たとえば、処理完了後、ウインドウ
の倍率をかえるとか、doevents
をいれるとか、
For Each pgeObj In ThisDocument.Pages
For Each layObj In pgeObj.Layers
layObj.CellsC(visLayerVisible) = True
DoEvents '画面をリフレッシュ
Next layObj
Next pgeObj

07: 名前:てんてんてん投稿日:2004/08/11(水) 09:56
できました!
ありがとうございました。

08: 名前:わんこ投稿日:2004/08/11(水) 10:57
yodaさん、ありがとうございます。
>画面をリフレッシュすれば、OK。
なるほど、画面が更新されていなかったのですね!
またひとつ勉強になりました。

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



295: シェイプを右クリックした時のカスタムのメニュー(アドオン)  全レス

01: 名前:あひゃ投稿日:2004/08/02(月) 15:59
いつも拝見させて頂いてます。
Visioのアドオン(EXE形式)をC#で作っています。
Visio起動時にアドオンを実行し、Visioが終了するまで
アドオンは実行されています。
図面にある特定のシェイプを右クリックしたときに、そのシェイプ
専用にカスタマイズされたショートカットメニューを表示したいのですが、
実現できる方法はありますでしょうか。
右クリックした時のマウスの位置や、選択されているシェイプの
オブジェクトは入手することが可能なのですが、どうもカスタムの
ショートカットメニューの作り方がわかりません・・・

02: 名前:yoda投稿日:2004/08/02(月) 16:43
概略以下の通りです。
シェイプのシェイプシートを
開き、Action セクションを
挿入、Action セルにRUNADDON
関数を記述、Menuセルにメニュを
記述。

03: 名前:あひゃ投稿日:2004/08/02(月) 17:10
いつもありがとうございます!
シェイプシートのActionセクションにRUNADDON関数を記述するやり方だと
ここで指定できるのは別のEXEかマクロですよねぇ。
実はアドオン(EXE)がVisio起動時から既に動いておりまして、
そいつに処理を全部やらせようと思っています・・・
そいつがVisioが起こすイベントを拾いまくります・・・

04: 名前:yoda投稿日:2004/08/02(月) 22:18
>図面にある特定のシェイプを右クリックしたときに、そのシェイプ
>専用にカスタマイズされたショートカットメニューを表示
する方法に限定すれば、他に方法はないと思うんですが、
私の学力では...。マクロの方からお迎えに行くような事は、
出来ないんでしょうか...?

05: 名前:あひゃ投稿日:2004/08/03(火) 00:08
お世話になっております!
この前yodaさんに教えて頂いた方法(ツールバーにMyButtonを追加し、
Clickのイベントを拾う方法)みたくできないかなぁと思っています。
もうちょっと調べてみて、だめならマクロか何かで逃げるかも^^;
シェイプをマウスでダブルクリックした時のイベントも拾いたいのですが、
マウスのイベントってすくないですよねぇ・・・たしか3つしかなかったような
・・・

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



296: Visio2003の作業ウインドウに自作ヘルプの目次を表示させたい。  全レス

01: 名前:yoda投稿日:2004/07/29(木) 21:32
Visio2003の作業ウインドウ「Visioのヘルプ」に
自作ヘルプの目次を表示させる方法はあるのでしょうか?
VBAのInvokeHelpでたとえば、
Application.InvokeHelp "mas_b.chm", 15, 2211
とすれば、chmファイルのトピックの部分は、
Visioのヘルプのスタイルで表示できるのですが、
目次の部分が表示できません。
AWファイルが必要なのでしょうか?
Answer Wizard Builder でAWファイルを
作ろうとしたのですが、、assertion failed エラー
となってしまい、作れない状況です。

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



297: PNT関数について  全レス

01: 名前:jkp投稿日:2004/07/22(木) 20:02
Visio初心者のjkpです
VisioデータをVBで取得する際にLOCTOLOC関数を使ってデータをとろうとしているのですが、
PNT(・・,・・)とかくと
コンパイルエラー:
SubまたはFunctionが定義されていません。
とエラーが出ます。
PNT関数について調べたのですが、わかりません。
この関数をつかうときにはなにか特別な宣言とか必要なのでしょうか?
わかる方いらしゃったらよろしくおねがいします。

02: 名前:yoda投稿日:2004/07/22(木) 20:58
LOCTOLOC関数もPNT関数も
visioのシェイプシートで使用する
関数です。
VBで使うには、
shp.cells("cellname").formula="PNT(・・・)"
というような(細かいところはご自分で)
使い方になります。

03: 名前:jkp投稿日:2004/07/22(木) 21:58
すばやい回答ありがとうございました。
上の回答わかりました。
この方法でシェイプシートにスクラッチセクションに値を入れていきたいのですが
スクラッチセクションをVBから追加することや行を増やす事は可能ですか?

04: 名前:jkp投稿日:2004/07/22(木) 22:01
すいません。
解決しました。yoda様ありがとうございました。

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



298: Unicodeに変換した文字をカスタムプロパティに設定したい  全レス

01: 名前:渡辺投稿日:2004/07/09(金) 18:34
いつも勉強させていただいています。
Unicodeに変換した文字をカスタムプロパティに設定したいのですが、
下記コードの最後の行で、「引用符が不足しています。」という
エラーが出てしまいます。
環境は、Visio2002+Windows2000です。
対策方法をご存知の方がおりましたら、ご教示お願い致します。
Dim tmpStrA As String
Dim tmpStrB As String
tmpStrA = "A"
tmpStrB = StrConv(tmpStrA, vbUnicode)
ActiveWindow.Selection(1).Cells("Prop.cs_Text").Formula = Chr(34) & tmpStrB & Chr(34)

02: 名前:yoda投稿日:2004/07/09(金) 21:21
答えは分りませんが、
シェイプシートのセルが、
ユニコードを受け付けるのか?
ということではないかと思います。
たぶん、だめでしょう。

03: 名前:yoda投稿日:2004/07/10(土) 07:02
tmpStrA = "花"
のように、2バイト文字
なら、エラーになりません。
そこで、以下のようにしたら、
エラーにはならないのですが....
tmpStrA = "A"
tmpStrB = StrConv(tmpStrA, vbWide)
tmpStrB = StrConv(tmpStrB, vbUnicode)
ActiveWindow.Selection(1).Cells("Prop.Row_1").Formula = Chr(34) & tmpStrB & Chr(34)

04: 名前:yoda投稿日:2004/07/10(土) 07:19
この場合でも、
tmpStrA = "B"
だと、エラーになります。
表記法に反する文字列
になるためでしょう。
私のPCでは、Unicode
が表示できるように、
設定してないので、
分かりませんが、
Unicodeのフォントが
きちっと表示できるように
設定したら、
よいのかも知れません。

05: 名前:渡辺投稿日:2004/07/11(日) 11:18
yoda様、回答ありがとうございました。
私もいろいろ試行錯誤しておりますが、どうしてもうまくいきません。
文字によって設定できるものとできないものがありますね。
unicodeに変換したときの文字コードによるのでしょう。
何か別な方法を考えてみます。
ありがとうございました。

06: 名前:yoda投稿日:2004/07/11(日) 14:55
キーワード 「strconv unicode」で、
web検索したところ、こんなサイトが
ありました。
http://ac.accessclub.jp/actips/tips_124.htm [source] [check]
試しに、
tmpStrA = "B"
tmpStrAA = StrConv(tmpStrA, vbFromUnicode)
tmpStrB = StrConv(tmpStrAA, vbUnicode)
ActiveWindow.Selection(1).Cells("Prop.Row_1").Formula = Chr(34) & tmpStrB & Chr(34)
と、してみたところ、エラーが出なくなりました。
しかし、どういうことなのか、
私にはさっぱり分りませんが。

07: 名前:yoda投稿日:2004/07/11(日) 15:06
VBAエディタの上では、すべて、
unicoddeだということ?

08: 名前:渡辺投稿日:2004/07/11(日) 17:45
yoda様、いろいろ調べていただいて本当に感謝申し上げます。
No06の方法を実際にやってみました。
エラーは確かに出なくなりましたが、カスタムプロパティのデータは
Unicodeになっていないような気がします。

09: 名前:yoda投稿日:2004/07/11(日) 20:55
unicodeについは、以下が参考になりました。
[XL97]Unicode と 文字列操作関数の留意点
http://support.microsoft.com/default.aspx?scid=kb;ja;408879 [source] [check]

10: 名前:渡辺投稿日:2004/07/12(月) 14:21
大変お世話になっております。
もともとは、普通にカスタムプロパティへ設定すると文字化けしてしまう
文字(第4水準漢字)があるために、strConv関数を使用していました。
ですが、半角英字を登録しようとするとエラーになってしまうということで、
本件の質問になった次第です。
いろいろ試してみましたが、お手上げ状態です。
結局、AscW関数で、Unicodeの文字コード(「あ」なら「3042」のように)を
カスタムプロパティに登録して、画面に表示するときにChrW関数で
文字を表示するような方法に逃げました。。。
yoda様には大変お世話になりましてありがとうございました。
今回の件でUnicodeについて少し理解できた気がします。

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



299: 特定のシェイプを選択  全レス

01: 名前:shima投稿日:2004/07/07(水) 10:23
お世話になります.
早速ですが,オブジェクト情報の名前が同じシェイプのみをすべて選択したいのですが,可能でしょうか?
例えば,「三角形」と「正方形」を図面上に複数配置し,「正方形」のみを選択するというような操作です.
特定のシェイプを選択し,そのカスタムプロパティーをEXCELに書き出したいのですが,特定のシェイプを選択する方法がわからず,困っています.
宜しくお願いします.

02: 名前:yoda投稿日:2004/07/07(水) 10:47
一般的で万能な方法はないと
思います。
「三角形」と「正方形」を、どのようにして、
作ったかによって違うと思います。
どこで違いを見分けるか、
シェイプシートをよーく調べて、
うまい手がかりを見つけることが、
必要でしょう。
最初に、区別できる目印をつけてしまえば、
見分けるのが、かんたんですね。
たとえば、名前をつけるとか、
カスタムプロパティで、情報を加える
とか。

03: 名前:shima投稿日:2004/07/07(水) 11:00
早速のご返答有難うございます.
>「三角形」と「正方形」を、どのようにして、
>作ったかによって違うと思います。
図形はステンシルの図形です.
シェイプ名(正方形.1,正方形.2,・・・正方形.i)の
「正方形」を含むシェイプのみを抽出したかったのですが…
>最初に、区別できる目印をつけてしまえば、
>見分けるのが、かんたんですね。
おっしゃる通りにやってみます.
初心者の質問にご丁寧に対応していただき,有難うございます.
これからも宜しくお願いします.

04: 名前:スキップ投稿日:2004/07/07(水) 13:49
スキップです。
それぞれのマスタシェイプにまとめて選択したいシェイプ毎に
レイヤを設定することは可能ですか?
[編集]-->[種類によって選択]でレイヤごとに選択できます。

あ!VBAだ!

Visio2003だと
Dim vsoSelection1 As Visio.Selection
Set vsoSelection1 = Application.ActiveWindow.Page.CreateSelection(visSelTypeByLayer, visSelModeSkipSuper, "A")
Set Application.ActiveWindow.Selection = vsoSelection1
でいけるみたいです。
ほかのVisioだと・・・・。
一つ一つSelectしていくのかと。

05: 名前:yoda投稿日:2004/07/07(水) 14:23
>オブジェクト情報の名前が同じシェイプのみをすべて選択したいのですが
たとえば、名前が「四角形」、「四角形.1」、「四角形.2」、「四角形.3」、...
だったとします。このときは、以下のようにすればよいと思います。
'Sub SelectSquare()
'' Dim s As Visio.Shape
'' For Each s In ActivePage.Shapes
''' If s.Name Like "四角形*" Then
'''' ActiveWindow.Select s, visSelect
''' End If
'' Next
'End Sub

06: 名前:shima投稿日:2004/07/07(水) 15:06
スキップ様,yoda様
ご丁寧に解説頂き有難うございます.
無事解決致しました.

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



300: カスタマイズしたメニューでのチェック表示  全レス

01: 名前:わだ投稿日:2004/07/03(土) 10:35
いつもお世話になっております。
カスタマイズしたmenusetにて、その状態表示をchecked表示させたい
のですが・・・どうやればいいのか判りません。
具体的には、各レイヤーのon/offをパターン化し、その数パターンを
menusetにて切り換えることは行っているのですが、現在、選択されている
パターン部分のmenusetに、checked表示させたいものであります。
Visio2002+Win2000です。
ご指導、頂ければと思います。宜しくお願いします。

02: 名前:yoda投稿日:2004/07/03(土) 17:56
よく分からないのですが、
Styleプロパティのhelpに
例があります。その例では、
StyleをvisButtonIconandCaption
とし、IconFileNameプロパティを
設定していますが、チェックマーク
のアイコンが、果たして、どこに
あるやら。
チェックのあるアイコンと、ないのと、
2種類自作して、設定するのかなー。

03: 名前:yoda投稿日:2004/07/04(日) 05:53
.FaceIDプロパティなら、
Visio内臓のアイコンが使えますね。
たとえば、
.FaceID = visIconIXACCEPT

それから、
IconFileNameは、プロパティ
では無く、メソッドでした。
訂正します。

04: 名前:yoda投稿日:2004/07/04(日) 06:08
visIconIXCHECKMARKだと、
黒いチェックになりますね。
その他、visiconixで始まる
定数を、オブジェクトブラウザ
で検索し、気に入ったのを、
選ぶとよいでしょう。

05: 名前:yoda投稿日:2004/07/04(日) 10:39
http://www.mster.co.jp/visiosquare/cgi-bin/upload/image/080.lzh [source] [check]
に、アイコンの一覧をアップしてみました。
ダウンロードして、解凍すると、jpg画像があります。
アイコンの左の番号はFaceIDです。

06: 名前:yoda投稿日:2004/07/05(月) 09:26
間違いがありました。
FaceIDは、ゼロから始まっていました。
直したものを、イメージボードにアップ
しなおしました。ここです。
http://www.mster.co.jp/visiosquare/cgi-bin/imgboard/vis-img/img20040705092353.jpg [source] [check]

07: 名前:わだ投稿日:2004/07/05(月) 10:20
yoda様
おはようございます。ありがとうございます。
自分のイメージでは、visButtonUp/visButtonDownでの切り換えを
menusetの変更がある毎に書き換えで考えていました。

08: 名前:yoda投稿日:2004/07/06(火) 07:26
もちろん、すでに、すでに、
チェックマークのついた、
組み込みメニュ、たとえば、
表示/グリッドの場合は、
ActiveWindow.ShowGrid = True
ActiveWindow.ShowGrid = False
で、切り替えできます。

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


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