KoMaDo   VISIO SQUARE : VB/VBA  ■ Headline ■ HOME    

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

181 :ヘルプに項目の追加をする(07)  182 :Menuの追加ができません。(03)  183 :全図形に対する一括処理(10)  184 :WordからDoVerbで開いた時のVisioプロセス起動を少なくしたい(04)  185 :参照設定なしで他のプロジェクトのプロシージャを呼び出す方法(07)  186 :図形ウインドウの幅を変える(03)  187 :シェイプの削除が一回でできません(04)  188 :ステンシルをDropした後、フォームからVBAに処理を戻したい(08)  189 :CreateSelection(05)  190 :VISIO UMLソリューション(03)  191 :VB6.0での更新の仕方について(02)  192 :CreatObject関数を使い方(02)  193 :VBへの値の受け渡し(03)  194 :Access のデータアクセスページでのDrawing Controlのイベント(05)  195 :excelデータより組織図を作成したい(05)  196 :回転グループ図形の幅、高さ取得(13)  197 :スタートアップ(StartUp)フォルダについて(07)  198 :INIファイルに記述した内容を取得(02)  199 :シェイプのドロップイベントをキャンセルする方法 (05)  200 :テキストの選択状態(33)  201 :座標取得(03)  202 :VisioとVSの連携(05)  203 :Visio2000の起動時ウィンドウ(04)  204 :「ファイルが見つかりません」というメッセージが出て来る(11)  205 :VBAで組織図を作成(01)  206 :図形ウインドウのVisible プロパティ(03)  207 :DoCmd関数がエラーになる例(01)  208 :DrawingControlから呼んだアドオンでのドキュメント名称の取り方(05)  209 :グループ化図形の色変更(02)  210 :図形を選択不可にする方法(03)  211 :instancehandle32からVisio.Applicationオブジェクトを取得(10)  212 :User-Defined Cells(17)  213 :値の取得(03)  214 :サブメニューの作り方(07)  215 :EXCELからVISIOマクロを動かしたのですが(06)  216 :シェイプの背景色が変わらない(04)  217 :シェイプデリートイベントをキャンセルする方法(11)  218 :ポップアップメニューを非表示する方法を教えて(05)  219 :ページ名の変更について(03)  220 :Visioのプロパティ内容の取得(15) 
ログ検索  リロード  前のページ  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 次のページ  総てのスレッド  スレッド総数 696181 - 190 を表示


181: ヘルプに項目の追加をする  全レス

01: 名前:投稿日:2005/11/17(木) 11:44
Visio入門者の柏です。
Visioのヘルプに自分で作ったプログラム(マクロや、アドイン)のヘルプを追加することは可能でしょうか?

02: 名前:M3号投稿日:2005/11/17(木) 16:47
ヘルプは、カスタマイズできないと思います。

03: 名前:yoda投稿日:2005/11/17(木) 17:02
できます。Visio2003SDKの中にある、Solition Publish Tool も
使えます。また、以下の説明が、参考になります。
http://support.microsoft.com/default.aspx?scid=kb; [source] [check][LN];832029#kb1
ただ、私には、まだ、Helpの目次を、VisioのHelp画面に追加することが、
できません。

04: 名前:yoda投稿日:2005/11/17(木) 17:06
訂正です。VisioのHelpと一体のものはできませんが、独自のHelpとして、
VisioのHelpとは、独立に動くようにすることは、できます。

05: 名前:yoda投稿日:2005/11/17(木) 17:12
上のURLは正しくは、
"http://support.microsoft.com/default.aspx?scid=kb;[LN];832029#kb1"
です。
" [source] [check]"を、取り除いてください。

06: 名前:投稿日:2005/11/17(木) 18:17
アドオンと同じようなイメージでインストールするのですね。了解です。
しかし、このVisiosolutionPublishingToolで設定し作成されるファイル、XXX.vpcですが、
作成後、.NETのセットアップソリューションでどのように設定するのかがわからないのですが、ご存じでしょうか?
ちなみに、Visio2002の時のインストール方法である、フォルダに格納して検索させる方法も2003では有効でした。(余談ですが)

07: 名前:yoda投稿日:2005/11/17(木) 19:49
>フォルダに格納して検索させる方法も2003では有効でした。
そうですね、簡単なほうがいいので私も、そうしたいと思います。

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



182: Menuの追加ができません。  全レス

01: 名前:yoda投稿日:2005/11/14(月) 21:12
Office.CommandBarで、図面を開いたら、Visio2003のメニューバーに、
メニューを追加するように、したいのですが、一瞬、メニューができて、
消えてしまいます。コードは以下のようになっています。
[ThisDocument]
Sub document_documentopened(ByVal doc As IVDocument)
AddMenu1
End Sub
[Module1]
Sub AddMenu1()

Dim myMenuBar As Office.CommandBar
Dim newMenu As Office.CommandBarControl
Dim ctrl1 As Office.CommandBarControl

Set myMenuBar = Application.CommandBars.ActiveMenuBar
Set newMenu = myMenuBar.Controls.Add(Type:=msoControlPopup, Temporary:=True)
newMenu.Caption = "Menu1"

Set ctrl1 = newMenu.Controls.Add(Type:=msoControlButton, ID:=1)
ctrl1.Caption = "TEST"
ctrl1.OnAction = "test"
ctrl1.TooltipText = "Menu Made by me"
ctrl1.Style = msoButtonCaption
End Sub

Sub test()
MsgBox "TEST"
End Sub
図面を開いておいてから、個別に、AddMenu1を実行すると、問題
なく、メニューができますが、document_documentopenedから、
コールしたのでは、うまくできません。どうしてでしょう。
NewMenu.Visible=True (?) を最後にいれても、だめでした。
ちなみに、UiObjectの場合は、問題ありませんでした。

02: 名前:yoda投稿日:2005/11/14(月) 22:08
試しに、このコードをそのまま、Excelで動かしてみましたが、
全く問題ありませんでした。なぜ、Visioでは、だめなんでしょう。
Visio2003 には、SP2が当ててあります。
もしかしたら、SP2がいけないのかも。

03: 名前:yoda投稿日:2005/11/15(火) 19:56
メニューバーにメニューを追加するのではなく、標準のツールバーに
追加して見ましたところ、この場合も問題ありませんでした。
それは、上のコードで、
Set myMenuBar = Application.CommandBars.ActiveMenuBar

Set myMenuBar = Application.CommandBars("Standard")
とするだけで、試してみることができます。
メニューの場合に、だめということなのでしょうか。
そんなばかな、と思いますが。どうでしょう?

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



183: 全図形に対する一括処理  全レス

01: 名前:タニ投稿日:2005/11/09(水) 14:48
はじめまして。早速質問させてください。

Visioマクロを使って、2週間程度ですが、いろいろ調べてみたのですが、使い方がいまいち理解できず困っています。
現在は、Wordマクロから、Visioのシェイプを動かしています。

<<実施したい事>>
・Visioの図形全てを選択
・線の色を黒
・図形内の文字列を黒
にしようと考えています。
その後、最後に図形内の文字列に取消線がついていないかどうか調べるために、以下のようなソースを作成しました。
しかし、1つずつ図形を処理しているので、速度が遅いです。

<<教えていただきたい事>>
@activewindow.selectallで選択した図形を、一括で
・線の色を黒
・文字の色を黒
にできますでしょうか?
activewinow.selection.〜←ここに何か記述すればできるのかな?と考えていますが、できますか?

Aその他、以下のソースの処理速度を上げる方法は何かありますか?

With VisioObjPage
' Visioオブジェクト内のシェイプを1つずつ処理する
For Each VisioObjShape In .Shapes
With VisioObjShape

' Visioシェイプの文字行数を取得
For iCount = 0 To .RowCount(visSectionCharacter) - 1
' 文字列を黒に修正
.CellsSRC(visSectionCharacter, visRowCharacter + iCount, visCharacterColor) = 0
' 文字列の取消線有無を取得
If (.CellsSRC(visSectionCharacter, visRowCharacter + iCount, visCharacterStrikethru) = 1) Then
' 文字列に取消線がある場合は,ResultFlgOnにする
ResulftFlgOn = True
End If
Next iCount

' Visioシェイプ内の線オブジェクトを調査する
.CellsSRC(visSectionObject, visRowLine, visLineColor) = 0
End With
Next
End With

以上説明不足かもしれませんが、何かしら情報をお願いいたします。

02: 名前:yoda投稿日:2005/11/09(水) 15:29
@ は、ActiveWindow.Selection.LineStyle = "Red" で、できると思います。
実行前に、書式⇒スタイルの定義⇒名前⇒Red⇒線⇒色⇒赤 としておきます。

03: 名前:yoda投稿日:2005/11/09(水) 15:43
A は、特にないと思います。
ResulftFlgOn = True の次に、
Exit For を入れるくらいしか、思いつきません。
  

04: 名前:タニ投稿日:2005/11/09(水) 15:50
yoda様回答ありがとうございます。
02ですが、少しタニのイメージと違っています。
ごめんなさい。
実行前に、書式⇒スタイルの定義⇒名前⇒Red⇒線⇒色⇒赤も含めて自動で行いたいです。
方法が無いのですかね。
activewinow.selection.CellsSRC(visSectionCharacter, visRowCharacter + iCount, visCharacterColor) = 0
のような使い方のできるメソッド?があるかと思っていました。

03については、そうですね。@が解決できれば、exit forをいれようと考えていました。
ありがとうございます。

もうしばらく回答をお待ちしています。

05: 名前:yoda投稿日:2005/11/09(水) 15:53
@ と全く同じ質問が、英文のサイトでも、出ていました。
単なる偶然でしょうか?
「Discussions in visio.developer.vba」
http://msdn.microsoft.com/newsgroups/default.aspx?dg=microsoft.public.visio.developer.vba&lang=en&cr=US [source] [check]

06: 名前:yoda投稿日:2005/11/09(水) 15:55
>実行前に、書式⇒スタイルの定義⇒名前⇒Red⇒線⇒色⇒赤も含めて自動で行いたいです。
Visio2003の場合なら、マクロの記録で、簡単に作れます。
わずか数行です。

07: 名前:タニ投稿日:2005/11/09(水) 15:58
英語は分かりません。読めません。
偶然です。マルチポスト?はしてません。
そちらは解決してるのでしょうか?
02と同じような記述がありますが、タニのイメージとは少し違います。

08: 名前:タニ投稿日:2005/11/09(水) 16:59
Visio2000ですが、
書式⇒スタイルの定義⇒名前⇒Red⇒線⇒色⇒赤
はどのようにすればできますでしょうか?
2000でも可能ですか?
ご教授ください。

09: 名前:yoda投稿日:2005/11/09(水) 17:18
2000では、マクロの記録ができません。
2003で。記録をとると以下のようになります。
Dim vsoStyle1 As Visio.Style
Application.ActiveDocument.Styles.Add "Red", "Normal", True, True, True
Set vsoStyle1 = Application.ActiveDocument.Styles.ItemFromID(6)
vsoStyle1.CellsSRC(visSectionObject, visRowLine, visLineColor).FormulaU = 2

10: 名前:タニ投稿日:2005/11/10(木) 09:39
yodaさん、ご回答ありがとうございます。

大変参考になりました。
ありがとうございました。
こちらはクローズさせていただきます。

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



184: WordからDoVerbで開いた時のVisioプロセス起動を少なくしたい  全レス

01: 名前:タニ投稿日:2005/11/09(水) 17:23
別の質問でスレッドを立てさせていただきます。
現在WordファイルにWordシェイプとして、貼り付けてある、Visioオブジェクトを処理しています。
1つのWordシェイプをVisioで開くごとに1つのVisioプロセスを起動してしまいます。
推測ですが、このVisioプロセスの起動に大変時間がかかってしまっているようです。
<<実施したいことは>>
Visioプロセスを1つのプロセスで処理できるようになりませんでしょうか?

現在のソースは以下のような感じです。

For Each WordObjShape In WordObjDoc.Shapes
' Wordのシェイプ1つずつ処理を行う
With WordObjShape.OLEFormat
' 編集状態にしない(VisioプロセスはWordShapeごとに起動)
.DoVerb (wdOLEVerbHide)
' Visioオブジェクトの保持
Set VisioObjPage = .Object ←ここでVisioプロセスが起動。
End With

' Visioに対するいろいろな処理

next

02: 名前:yoda投稿日:2005/11/09(水) 18:22
Visio application の Visible プロパティを false にすれば、
多少軽くなるかも知れませんが、特効薬は、あるんでしょうかね。

03: 名前:yoda投稿日:2005/11/09(水) 18:24
これも効果は疑わしいですが、
Visio application の ScreenUpdating プロパティを False
に、するのは、どうかなー。

04: 名前:タニ投稿日:2005/11/09(水) 23:45
yodaさん、ご回答ありがとうございます。
Visible,ScreenUpdatingは実施済みでした。
説明不足ですいません。

大変参考になりました。
ありがとうございました。
こちらはクローズさせていただきます。

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



185: 参照設定なしで他のプロジェクトのプロシージャを呼び出す方法  全レス

01: 名前:スコット投稿日:2005/11/06(日) 22:36
参照設定をせずに、他のプロジェクトのプロシージャを呼び出す方法はないのでしょうか?

既存のファイルにツール的な機能を追加したいのですが、
あまりにもファイル数が多い為、1つ1つに追加することができません。


そこで、既存のファイルをオープンした状態から、
→マクロ記載のドキュメントをオープンして、Document_DocumentOpenedからマクロ起動
→オープン中のドキュメント全てについて、右クリックメニューに機能を追加
→機能選択時は、マクロ用ドキュメントの内容を実行

としたいのですが、メニューに追加はできたものの、
グレー表示され、選択することができません。

Set menuItemObj = menuObj.MenuItems.AddAt(0)
menuItemObj.Caption = "ツール機能"
menuItemObj.CmdNum = 0
menuItemObj.AddOnName = "ツール.Module1.TOOL"

としているのですが、うまくいきません。

ご存知の方、どうか教えて頂けませんでしょうか?

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

02: 名前:yoda投稿日:2005/11/07(月) 08:55
ヘルプに明記されているように、参照設定は必須のようです。
全く違う方法ですが、図面ページのシェイプシートにActionセクションを
追加して作る、ポップアップメニューから、CallThis関数や、RunMacro
関数で、別プロジェクトのマクロを呼ぶ場合は、参照設定は必要ないと、
ヘルプに書いてあり、私も良く使う方法です。

03: 名前:visGeek投稿日:2005/11/07(月) 09:44
マクロを搭載しているファイルに、参照設定から
「Microsoft Visual Basic for Applications Extensibility」を追加しておき、
このファイルのDocument_DocumentOpenedの中から
VBIDE.Referencesオブジェクトを使ってオープン中の
全ドキュメントに自分(マクロを搭載しているファイル)への
参照設定を追加する、というのはいかがでしょうか。

必要ならDocument_QueryCancelDocumentCloseあたりで
参照設定を解除して元通りにしてください。

検証していませんので、うまく動かなかったら悪しからず。

04: 名前:yoda投稿日:2005/11/08(火) 12:31
「Referencesオブジェクト」の方法は、大変いいアイデアですね。
関連することですが、参照設定を解除するのは、Removeメソッド
でよいのでしょうか?次のような方法で実行すると、必ず一度目は、
失敗し、もう一度実行すると、成功します。どこがわるいのでしょうか?
For Each myRef In myRefs
If myRef.FullPath = strRefDwg Then myRefs.Remove myRef
If myRef.FullPath = strRefStn Then myRefs.Remove myRef
Next
If myRef.Name="name" then でも同じように、一度目は失敗します。

05: 名前:yoda投稿日:2005/11/08(火) 17:10
どこが悪いのか、分からないのは、そのままにして、
失敗したらもう一回実行するようにしました。
コードは、以下のようになりました。
少し、長くなりますが、ご容赦を。
Private myRef As Reference
Private myRefs As References
Private refDwg As Reference
Private refStn As Reference
Private strRefDwg As String
Private strRefStn As String

Sub SetReferences()
On Error GoTo ERRMSG
InitDef
Set refDwg = myRefs.AddFromFile(strRefDwg)
Set refStn = myRefs.AddFromFile(strRefStn)
ActivePage.PageSheet.Cells("Actions.Row_3").Formula = """"""
ActivePage.PageSheet.Cells("Actions.Row_4").Formula = """参照設定除去"""
MsgBox refDwg.Name & " と " & refStn.Name & " への参照設定を追加しました。"
Exit Sub
ERRMSG:
MsgBox Err.Description
End Sub

Sub RemoveReferences()
On Error GoTo ERRMSG
InitDef
DoEvents
For Each myRef In myRefs
If myRef.FullPath = strRefDwg Then myRefs.Remove myRef
If myRef.FullPath = strRefStn Then myRefs.Remove myRef
Next
ActivePage.PageSheet.Cells("Actions.Row_3").Formula = """参照設定追加"""
ActivePage.PageSheet.Cells("Actions.Row_4").Formula = """"""
MsgBox "参照設定を解除しました。"
Exit Sub
ERRMSG:
RemoveReferences
End Sub

Private Sub InitDef()
strRefDwg = "C:\Documents and Settings\Administrator\My Documents\Visio図面\別プロジェクト.vsd"
strRefStn = "C:\Documents and Settings\Administrator\My Documents\Visio図面\別プロジェクトのステンシル.vss"
Set myRefs = Application.Vbe.ActiveVBProject.References
End Sub

06: 名前:スコット投稿日:2005/11/09(水) 00:58
どうもありがとうございました!

「個別に参照設定をしなければいけない」と言うことで
半ば諦めていたのですが、「マクロ側で参照設定まで追加してしまう」
とのご発想に、正に目から鱗の想いです。

正直、「Referencesオブジェクト」がどういったものかすら分かっていないですが、
ヘルプをみながらがんばってみようと思います。

07: 名前:yoda投稿日:2005/11/09(水) 12:07
報告ですが。
Removeメソッドは、以下のようにすれば、エラーが発生しないようです。
myRefs.Remove myRefs.Item("name")
そのほか、! を使う記法もありました。
myRefs.Remove myRefs!name
どちらでも、大丈夫ですが、Item("name") の方が、変数で代入
できるので、便利です。変数の場合は
name="namae"
Item(name)
となります。

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



186: 図形ウインドウの幅を変える  全レス

01: 名前:yoda投稿日:2005/11/08(火) 21:05
英文のサイトで、図形ウインドウの幅を変える方法が話題になりました。
いろいろ、検討しましたが、WindowStateプロパティ、と、
GetWindowRectメソッド、SetWindowRectメソッドを使って、できました。
まず、現在の図形ウインドウの位置とサイズは、GetWindowRect
メソッドで取得しますが、このメソッドで得られる図形ウインドウの
高さに間違いがあって、極端に小さい値が、出てくることが、分か
りました。
図形ウインドウの幅を設定するには、GetWindowRectメソッドを
使いますが、このメソッドは、図形ウインドウがフロート(浮遊)状
態でなければ、働かないことが、わかりました。
そのことを踏まえて、以下のようなコードを作りました。
TestWidth の中で、ChangeWidth に渡す幅をいろいろ変えて
実行してみてください。幅は100以下にはしない方がいいでしょう。
あまり狭すぎると、エラーになりますから。

Sub TestWidth()
ChangeWidth 200
End Sub

Sub ChangeWidth(NewWidth As Long)
Dim mywin As Visio.Window
Dim nLeft As Long, nTop As Long, nWidth As Long, nHeight As Long

Set mywin = ActiveWindow.Windows.ItemFromID(1669)
mywin.WindowState = visWSFloating
mywin.GetWindowRect nLeft, nTop, nWidth, nHeight
nWidth = NewWidth
mywin.SetWindowRect nLeft, nTop, nWidth, nHeight * 10
mywin.WindowState = visWSDockedLeft
End Sub

02: 名前:yoda投稿日:2005/11/08(火) 22:21
>このメソッドで得られる図形ウインドウの高さに間違いがあって、
>極端に小さい値が、出てくることが
どうも、いつでもそうなるわけでは、ないようです。よくわかりませんが、
ときどき、そうなります。

03: 名前:yoda投稿日:2005/11/08(火) 22:36
TestWidth の中で、ChangeWidth に渡す幅をいろいろ変えて
実行してみると、わかりますが、幅をわずかに変えようとしても、
受け付けないことがあります。ステンシルにマスターアイコン
が表示されているときは、たとえば、幅を200としても、
210としても、処理結果は変わりません。マスターアイコンの幅
に関係があるようです。幅の入力値を連続的に変化させても、
図形ウインドウの幅は、マスターアイコンの幅の整数倍にしか、
ならないようです。

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



187: シェイプの削除が一回でできません  全レス

01: 名前:とも投稿日:2005/11/04(金) 15:06
アクティブな図面上にあるシェイプの内で、[オブジェクト情報]の[メモ1]が
”あいうえお”であるシェイプを削除する為に、以下のようなマクロを作成しました。

Sub 削除()
Dim myShape As Shape
For Each myShape In Visio.ActivePage.Shapes
If myShape.Data1 = "あいうえお" Then
myShape.Delete
End If
Next
End Sub

これで実行すると削除されるべきシェイプが残ってしまいます。
具体的には、シェイプが半数(奇数個の場合は半数-1)になります。
例えば、5個→2個、2個→1個になります。

私には、原因も解決策も全くわかりません。
Windows2000、Visio2000でやっております。
どなたかご存知の方、宜しくお願いします。

02: 名前:visGeek投稿日:2005/11/04(金) 16:29
For Eachでループ中に元のコレクションに
要素を追加したり削除したりしてはいけません。
ForでShapes.Count - 1から逆順にループし
ShapesのItemにインデクスを渡して処理しましょう。

03: 名前:yoda投稿日:2005/11/04(金) 16:47
Visio2003では、意外なことに問題なく消去できました。
For each myShape ループの中で、問題のmyShapeを
消去してしまうのは、私が古いのかもしれませんが、引っかかかります。
試しに、ループの中では、消去したいものを選択しておいて、
ループを終わってから、消去してみていただけませんか。
Dim myShape As Shape
For Each myShape In Visio.ActivePage.Shapes
If myShape.Data1 = "あいうえお" Then
ActiveWindow.Select myShape, visSelect
End If
Next
ActiveWindow.Selection.Delete

04: 名前:とも投稿日:2005/11/04(金) 17:11
visGeek様、yoda様、ご回答ありがとうございます。
ループ中に消去してはいけないんですね。本当に勉強になりました。
また機会がありましたら宜しくお願いします。

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



188: ステンシルをDropした後、フォームからVBAに処理を戻したい  全レス

01: 名前:shi投稿日:2005/11/01(火) 13:26
はじめまして。shiと申します。
Windowsユーザインターフェースのステンシルを複数配置するVBAを組んでいます。

Set visVSS = visApp.Documents.OpenEx("Windows ユーザー インターフェイス.vss", 4)
Set visGrid = visVSS.Masters("グリッド")
Call visDoc.Pages(1).Drop(visGrid, 1, 1)

↑を実行すると、カスタムプロパティ設定のフォームが開きます。
カスタムプロパティ設定フォームで[OK]を押すまで、後続の処理が走りません。
上記の理由により、SendKeysも使えませんでした。

手作業で[OK]を押すことなく、自動的に処理をVBAに戻す回避策は御座いませんでしょうか?

宜しくお願い致します。

02: 名前:yoda投稿日:2005/11/01(火) 13:39
疑問があります。
何のために、カスタムプロパティ設定のフォームを開くのでしょうか?
開きたくないのでしょうか?
それとも、開いて、瞬時に閉じたいのでしょうか?

03: 名前:shi投稿日:2005/11/01(火) 14:35
yoda様、ありがとうございます。
言葉が不十分で申し訳ありません。

>何のために、カスタムプロパティ設定のフォームを開くのでしょうか?
>開きたくないのでしょうか?
>それとも、開いて、瞬時に閉じたいのでしょうか?

visDoc.Pages(1).Drop(visGrid, 1, 1)を 実行すると、自動的にフォームが開きます。
開きたくないのですが、開かないようにDropする方法がわかりませんでした。
それならば、瞬時に閉じてしまおうと考えたのですが、その方法もわかりませんでした。

目的は、ユーザの手を必要とすることなく、グリッドのステンシルを配置することです。

☆Dropしたときに、フォームをださない方法
☆開いているフォームを閉じる方法

どちらかについて、ご教示いただけたら幸いです。宜しくお願い致します。

04: 名前:yoda投稿日:2005/11/01(火) 15:05
☆Dropしたときに、フォームをださない方法
マスターシェイプのシェイプシートを開くと、
EventセクションのEventDropセルに、DOCMD(1312)という
式が、書いてあると思います。それを消せばよいのですが、
消すと、マスターの機能が変わってしまいます。
それを、防ぐには、そのマスターのコピーを独自のステンシル
に入れて、変更すれば、良いと思います。
今後は、そのコピーを使うようにするわけです。

05: 名前:shi投稿日:2005/11/01(火) 15:39
ご返答、ありがとうございます。

自分のマシン環境以外でも動かそうと考えています。
上記のようにステンシルを作って、それも配布する方法がベストということですね。

06: 名前:visGeek投稿日:2005/11/04(金) 09:38
Applicationオブジェクトの
AlertResponseプロパティのヘルプを見ると幸せになれますよ。

07: 名前:yoda投稿日:2005/11/04(金) 11:18
ありがとうございます。
こんなすばらしい方法があるんですね。
知りませんでした。

08: 名前:shi投稿日:2005/11/07(月) 14:54
ご返答ありがとうございます。幸せになれました。

マクロは無事完成致しました。ありがとうございます。

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



189: CreateSelection  全レス

01: 名前:yoda投稿日:2005/10/29(土) 15:19
英文のサイトで、特定のマスターからドロップダウンしたシェイプだけを、
選択する簡単な方法はないか、という話題がありました。
普通は、方法1のように、図面上のシェイプを一つ一つ調べるのですが、
CreateSelectionメソッドを使うと、方法2のように、簡単になるということ
を、教えてもらいました。
[方法1]
Dim shp As Visio.Shape
ActiveWindow.DeselectAll
For Each shp In ActivePage.Shapes
If Not shp.Master Is Nothing Then
If shp.Master.Name = "ActivityText" Then
ActiveWindow.Select shp, visSelect
End If
End If
Next shp
[方法2]
Dim vsoSelection As Visio.Selection
Dim myMaster As Visio.Master
Set myMaster = ThisDocument.Masters("ActivityText")
Set vsoSelection = ActivePage.CreateSelection(visSelTypeByMaster, visSelModeSkipSub, myMaster)
ActiveWindow.Selection = vsoSelection

02: 名前:M2号投稿日:2005/10/29(土) 23:47
CreateSelectionメソッドは、個人的にはvisSelTypeByLayer(任意のレイヤ)で
よく使います。visSelTypeByMasterも便利そうですね。
Visio2003から追加された大変便利なメソッドですが、今後のバージョンで例えば
「任意のユーザー定義セル」など、もっと絞り込めるオプションを増やして欲しいです。

03: 名前:yoda投稿日:2005/10/30(日) 17:49
CreateSelectionメソッドで、グループの中で特定のマスターを持つ
子シェイプを検出するには、どうしたらよいのでしょう?
上のコードに単純に、第2引数に、visSelModeOnlySubや、
visSubSelectを入れてみても、だめなようです。

04: 名前:yoda投稿日:2005/10/31(月) 13:54
最初に、CreateSelectionで、グループ図形を検索し、
次に、CreateSelectionで、同じマスター名のものを検索すれば、
できそうです。
グループの階層が単純な場合については、以下のようになりました。
なんだか、まだ、もたもたしています。どうしたものでしょうか?
Dim vsoGroupSelection As Visio.Selection
Dim vsoSubSelection As Visio.Selection
Dim myMaster As Visio.Master
Dim shpParent As Visio.Shape
Dim shpChild As Visio.Shape
Dim SelectedShapes As Visio.Shapes

Set myMaster = ThisDocument.Masters("ActivityText")
Application.ScreenUpdating = False
Set vsoGroupSelection = ActivePage.CreateSelection(visSelTypeByType, , visTypeSelGroup)
ActiveWindow.Selection = vsoGroupSelection

For Each shpParent In vsoGroupSelection
Set vsoSubSelection = shpParent.Shapes(1).CreateSelection(visSelTypeByMaster, , myMaster)
For Each shpChild In vsoSubSelection
ActiveWindow.Select shpChild, visSubSelect
Next shpChild
Next shpParent

05: 名前:M2号投稿日:2005/10/31(月) 22:57
確かに第2引数は役に立たないみたいですね。
面倒ですが、04:の例のようにグループ階層を追っていくしかないと思います。
ただ何故、グループシェイプ.CreateSelection〜ではなくて、
グループシェイプ.Shapes(1).CreateSelection〜としないとセレクトできないのか、
理解できません。

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



190: VISIO UMLソリューション  全レス

01: 名前:ぼんぼん投稿日:2005/09/27(火) 19:29
VBのインストールされたPCにVISIOをインストールすると、VB上に「VISIO UML ソリューション」というツールバーができています。
その後、VISIOを削除したのですが、ツールバーが削除されません。
どうすれば削除できますでしょうか?
ツールバーの表示も削除できません・・・

よろしくお願いします。

VB:VisualStudio6
VISIO:VISIO2000

02: 名前:yoda投稿日:2005/09/27(火) 21:01
全く分かりませんが、VBをいったんアンインストールし、
再インストールすれば、良いような気がします。

03: 名前:oru投稿日:2005/10/19(水) 18:59
VBのファイルメニュー[アドイン]より、アドインマネージャーを起動します。
Visio UML Add-inをロードしないようにすると、ツールバーから消えます。
私も使わんのに邪魔やな〜とずっと思ってました。
別件でアドインマネージャーを開いた際にたまたま見つけたんですが、
ツールバーから消えて、スッとしましたよ。。。

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


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