KoMaDo   VISIO SQUARE : VB/VBA  ■ Headline ■ HOME    

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

151 :名前をつけて図面を一時的に保存する。(04)  152 :参照設定について(03)  153 :グループ化したシェイプの中にシェイプが存在してるか確認する方法(06)  154 :描画ツールの表示(05)  155 :カスタムプロパティについて(02)  156 :メニューの有効・無効の方法について(08)  157 :【DoCmd】 キャンセル後のマウスカーソル(04)  158 :テキストの書き込み(04)  159 :ショートカットについて(12)  160 :SaveAsWebPageについて(02)  161 :保存用のダイアログについて(11)  162 :EventDropを再実行したいのですが・・・(04)  163 :VB上でのVISIOマクロの起動方法(08)  164 :ページ設定(09)  165 :他ページのシェイプのカスタムプロパティを取得する方法(03)  166 :カスタムプロパティの変更時(05)  167 :他ドキュメントのイベント取得の方法について(13)  168 :複数のコネクトオブジェクト(08)  169 :セキュリティ設定について(05)  170 :アンカーウインドウ(01)  171 :Visioへのパラメータの渡し方(05)  172 :メニューの追加について(09)  173 :カスタムプロパティーの内容にテキストボックスの値を代入したい(03)  174 :無効なシート識別子です(04)  175 :ページのUniqueID(13)  176 :図形とACCESS情報を結び付けたい(08)  177 :Visioファイルの保護(09)  178 :VBA の サンプルマクロ図面集(01)  179 :画像データのファイル名(03)  180 :VB6 カラー印刷できない(03)  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) 
ログ検索  リロード  前のページ  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 次のページ  総てのスレッド  スレッド総数 696151 - 160 を表示


151: 名前をつけて図面を一時的に保存する。  全レス

01: 名前:じっさん投稿日:2006/02/07(火) 15:11
現在の図面についている名前、パスとは別の名前、パスで図面を保存するマクロを作成しようと試みています。
SaveAsEx,SaveAsで、保存を行うと、名前、パス共に、一時的に保存しようとしたものに差し換わってしまいます。
現在の名前、パスを、ActiveDocument.Name / .Path /.FullPathを利用して、取得することは可能なのですが、
これらのプロパティは、すべて読み取り専用なので、再定義することができません。

別名で保存したいのだけど、今の名前は変えたくない場合、どのようにすればよいのかご存知の方、ご教授くださいませ。

02: 名前:M1号投稿日:2006/02/07(火) 15:32
上書き保存後、ファイルレベルで別名COPYするしかなかったような気がします。

03: 名前:じっさん投稿日:2006/02/07(火) 16:12
今は対策が判らないので、M1号さんのおっしゃるとおり、上書き保存後、FileCopyでコピーしているのですが、ユーザーが意図しないファイルの保存操作がおこなれてしまうことになるので、なんとかならないものかと、悩んでいます。。。

04: 名前:M1号投稿日:2006/02/07(火) 16:34
ベタですが、
1.SaveAsで別名保存後、改めて本来の名前で保存しなおす。
2.SaveAsで別名保存後、Undoする。

今はこれくらいしか思い浮かびません^^;

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



152: 参照設定について  全レス

01: 名前:shin投稿日:2006/02/06(月) 17:01
参照設定の内容を保護するような機能はありますでしょうか?
ある特定のライブラリ参照でも問題ありません。

以上、宜しくお願いします。

02: 名前:yoda投稿日:2006/02/06(月) 17:25
VisioのVBAの場合は、VBAを開く時のパスワードを設定する、くらいしか、
方法がないのではないかと思います。
VBAのメニューで、 ツール⇒、、、のプロパティ⇒保護 ですが、、、

03: 名前:shin投稿日:2006/02/06(月) 18:26
yoda様
いつもありがとうございます。

VBAの編集は、可能な状態にしておきたかったんですけど・・・
無理そうですね。

また、何かありましたら質問させて頂きます。

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



153: グループ化したシェイプの中にシェイプが存在してるか確認する方法  全レス

01: 名前:投稿日:2006/02/04(土) 17:24
visio2003を使用しています。

グループ化したシェイプの中に該当するシェイプが存在するかチェックを
かけたいと思っているのですが、下記のようなコードを作成してみました。

If shpobj.CellExists("A_Field", 0) = True Then
MsgBox "ありました。"
End IF

shpobjは、グループのシェイプです。
A_Fieldというシェイプはグループの中に存在しているのですが、Falseが戻ってきます。
こういう使い方はおかしいのでしょうか?

もし詳しい方がいらっしゃったらご教授ください。

02: 名前:りゅん投稿日:2006/02/04(土) 20:19
グループ内の各シェイプは shpobj.Shapes コレクションにあります。

Dim subshpobj As Shape
For Each subshpobj In shpobj.Shapes
If subshpobj.Name = "A_Field" Then
MsgBox "ありました。"
End If
Next subshpobj

03: 名前:yoda投稿日:2006/02/04(土) 20:42
もっと、簡単な方法があったような気がするのですが、
今は、これしか思い出せません。
Dim shpobj As Shape
Dim child As Shape
Set shpobj = ActiveWindow.Selection(1)
For Each child In shpobj.Shapes
If child.Name = "A_Field" Then
MsgBox "ありました。"
End If
Next

04: 名前:yoda投稿日:2006/02/04(土) 20:43
ごめんなさい。重複してしまいましたね。

05: 名前:yoda投稿日:2006/02/05(日) 06:42
ループをまわすのを避けるには、チョッと姑息だけれど、
Sub test()
On Error Resume Next
Dim shpobj As Shape
Set shpobj = ActiveWindow.Selection(1)
If shpobj.Shapes("test") Is Nothing Then
MsgBox "なかった。"
Else
MsgBox "ありました。"
End If
End Sub

06: 名前:投稿日:2006/02/06(月) 08:21
りゅん様、yoda様ありがとうございます。
いろんなやり方があるんですね。
ヘルプを見ているとCellExistsが使えそうかなと思っていたんですが
思った結果にならなかったので悩んでいました。

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



154: 描画ツールの表示  全レス

01: 名前:素人投稿日:2006/02/02(木) 20:06
現在、VBのフォーム上にVisio Drawing Controlを配置して
そこで作図をしようとしています。

VBから描画ツールの表示制御をすることはできるのでしょうか。
(描画ツールに含まれる、鉛筆ツールなど一つずつに対しては
 DoCmd(1220)にて対応できるのですが、、、)

よろしくおねがいします。

02: 名前:yoda投稿日:2006/02/03(金) 09:31
visCmdDrawingTools 1946 だと思います。
私は、Visioヘルプの「DoCmd/DOCMD コマンド」を、
ノートパドに貼り付け、テキストファイルとして保存しておき、
必要なときに、それを開き、編集メニューの「検索」で検索して、
必要なものを、探しています。

03: 名前:名無しさん投稿日:2006/02/03(金) 13:56
ご指摘頂いた通り、
DoCmd(1946)を実行しましたが、表示できませんでした。

ですが、Visio Drawing Controlのプロパティの
Negotiate ToolbarsをTrueにし、DoCmd(1946)を実行したところ、
表示・非表示の制御をすることができました。

上記方法は、適切なのでしょうか?
Negotiate Toolbarsが、どういうものなのか良く分からない為、
判断できません。

度々申し訳ありませんが、ご教授の程、宜しくお願いします。

04: 名前:yoda投稿日:2006/02/03(金) 14:22
Drawing Control の上では、DoCmdが動くものと、動かないものとが、
あるということまでは、分かっているのですが、一覧表になっていません
ので、その辺が、私の悩みです。一覧表の需要は多いでしょうか?

05: 名前:yoda投稿日:2006/02/04(土) 21:28
>上記方法は、適切なのでしょうか?
適切だと思います。

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



155: カスタムプロパティについて  全レス

01: 名前:shin投稿日:2006/02/01(水) 17:26
DocumentオブジェクトやPageオブジェクトにカスタムプロパティを
設定したいと考えていますが、ShapeオブジェクトのようにCell()メソッドが存在しません。

どのような方法で、カスタムプロパティを設定すればよいのでしょうか?
そもそも、DocumentオブジェクトやPageオブジェクトにカスタムプロパティを設定することは
可能なのでしょうか?

02: 名前:shin投稿日:2006/02/01(水) 17:38
申し訳ありません。
方法が見つかりました。
お騒がせしましたm(_ _)m

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



156: メニューの有効・無効の方法について  全レス

01: 名前:shin投稿日:2006/01/27(金) 16:59
Visio上部のある特定のメニューを無効にし、
選択できないようにする方法はあるのでしょうか?

例えば、自分で作成したシェイプを自前で作成したフォント指定画面のみで、
フォントとを指定させたいとします。
作成したシェイプが選択された時の、Visioの「書式」→「テキスト」を無効にし、
テキストを選択させないようにしたいと考えています。

マクロで、メニューの有効・無効を動的に変更することは、可能なのでしょうか?

ご存知の方、教えて頂けませんでしょうか?
宜しくお願いいたします。

02: 名前:yoda投稿日:2006/01/27(金) 17:40
enableプロパティをつかうと、できるかもしれません。
特定のメニューにたいして、
vsoMenuItem.Enabled = False または、 True
とします。

03: 名前:shin投稿日:2006/01/27(金) 20:43
yoda様

いつもありがとうございます。
動的変更することができました。

ありがとうございます。

04: 名前:shin投稿日:2006/01/31(火) 16:11
根本的なところを質問するのを忘れていましたので
もうひとつ質問させて下さい。

選択されたとき、シェイプの情報を解析し解析結果を元に
無効とする対象メニューを決定してメニューを無効にしたいと考えています。
(上記の方法で、メニューを無効にできることは確認できました。)

シェイプを「選択」もしくは「選択解除」した場合、
その都度、シェイプの選択状態を把握したいのですが、
シェイプの選択状態の情報を取得することは、できるのでしょうか?

以上、宜しくお願いします。

05: 名前:yoda投稿日:2006/01/31(火) 16:27
Selectionオブジェクト(あるいは、プロパティ)について、
調べてみてはいかがでしょう。
たとえば、
,,,,.Selection.Count=0 なら、どのシェイプも、選択されていません。

06: 名前:shin投稿日:2006/01/31(火) 19:31
selectionオブジェクトで、選択されているオブジェクト数を取得できることは確認していますが、
あるシェイプが選択されたその瞬間に、マクロを実行し対象メニューを無効にしたいと思っています。

例えば、「A」というシェイプが選択された時のみ、対象メニューを無効状態にして、
その後、他のシェイプが選択されれば、対象メニューを有効にするという挙動にしたいと
思っていますが、可能なのでしょうか?

選択された時にイベントが発生してくれれば問題ないのですが、
そういった、イベントが存在しないようなので、ちょっと困っています。

以上、宜しくお願いします。

07: 名前:yoda投稿日:2006/01/31(火) 19:47
SelectionChanged イベントを試してみてください。

08: 名前:shin投稿日:2006/01/31(火) 20:04
yoda様

早速の回答ありがとうございます。

Applicationオブジェクトにイベントが存在したんですね・・・
documentオブジェクトやpageオブジェクトの中を探してました。
申し訳ありませんでした。

SelectionChangedイベントで、問題ないことを確認しました。
ありがとうございました。

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



157: 【DoCmd】 キャンセル後のマウスカーソル  全レス

01: 名前:Tana投稿日:2006/01/24(火) 00:07

VB.Net2003からViso2003をDrawing Controlにて
制御するプログラムを開発しています。


下記ソースサンプルにて
 MyApp.DoCmd(1010)
を発行し印刷ダイアログ表示させます。
ここで、OK 若しくは キャンセルボタンを押下すると
マウスが砂時計のままとなってしまいます。
(Visoフォームで右クリック等すると通常の矢印状態に戻ります)

これは、ページ設定 DoCmd(1076) でも同様となります。


回避方法をアドバイスいただけませんでしょうか?


Protected Sub toolBar1_ButtonClick(ByVal sender As Object, _
ByVal e As ToolBarButtonClickEventArgs)
'MessageBox.Show(ToolBar1.Buttons.IndexOf(e.Button))
' Evaluate the Button property to determine which button was clicked.
Try
Select Case e.Button.Text
Case "Open Drawing"
'MyApp.DoCmd(1002)
OpenDrawing(1)
Case "Open Template"
'MyApp.DoCmd(1002)
OpenDrawing(2)
Case "Save"
SaveAsDrawing()
'MyApp.DoCmd(1005)
Case "Print"
'PrintDrawing(
MyApp.DoCmd(1010)
'printDoCmd()
Case "Stencil"
OpenCommonStencil()
Case "Personal Stencil"
MyApp.DoCmd(1442)
End Select
Catch ex As Exception
MessageBox.Show("エラーが発生しました - " + ex.Message)

End Try
End Sub

上記のサンプルは、下記を引用させて頂きました。
「VisioのDrawing ControlをVB .Netのフォームの上で動かしてみた」
http://www.mster.co.jp/visiosquare/cgi-bin/visbbs/mibbs.cgi?mo=p&fo=etc&tn=0067&rn=30 [source] [check]
内の
http://101.110.129.110/visiosquare/cgi-bin/upload/image/139.l [source] [check]

02: 名前:M1号投稿日:2006/01/24(火) 09:57
Drawing Controlでは、使えるDoCmdと使えないDoCmdがあったとどこかのスレで読んだ記憶があります。
ちょっと時間が無いので今はこれしか応えられません^^;

03: 名前:yoda投稿日:2006/01/24(火) 19:53
1010は、visCmdFilePrintでしたね。01のスレッドに動きました、と
私が書きました。
今は、VB .NETが、使えないので、再チェックできません。
そのうち、機会があったら、再テストしてみます。

04: 名前:Tana投稿日:2006/01/31(火) 15:51
お返事ありがとうございます。
遅くなって申し訳ありません。

本来の解決策ではないことは承知で
取り急ぎ、下記でシノギました。

シノギ策:
  Case "Page Set"
    try
    MyApp.DoCmd(1076)  ’ページ設定
    Catch ex As Exception
    '[キャンセル]または変更操作なしの[OK]ボタン押下は
    ’(Visio上で)マウスポインタが砂時計のままとなるため
    '”ガイド”のON/OFFイベント発行させ、この現象を解消する
    MyApp.DoCmd(1040)
    MyApp.DoCmd(1040)
  End Try

根本解決が可能な方法があれば
アドバイスいただけると
助かります。
よろしくおねがいします。

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



158: テキストの書き込み  全レス

01: 名前:vallsai投稿日:2006/01/30(月) 21:16
質問です。
フォーム上のテキストボックス内にテキストを入力し、
その後、ボタンをクリックすると、既存Visioファイルを開き、
ある決まった図形のテキストとして、そのテキストが書き込まれる。
というようなことはできるんでしょうか?
開くところまではいけるのですが、テキストの書き込みが上手くいきません。
方法をご存知の方がおられましたらどうかご教授お願いします。

02: 名前:yoda投稿日:2006/01/30(月) 22:12
どのようになさったのか、明らかにしていただけますか?

03: 名前:vallsai投稿日:2006/01/30(月) 23:31
yoda様
説明不足でした。すいません。
以下のようなコードをフォーム上のコマンドボタンに書きました。
(既存ファイルを開くところまで)
すると、選択していた図形のテキストにテキストボックスに打った文字が入るんですが、
その後に、自動で開いた既存ファイル上にある決まったIDの図形のテキストにも
その同じ文字が入力されるようにしたいのです・・・。
でも、同じように書いても”無効な識別子です”というエラーがでて上手くいきません。
どのようにしたらよいでしょうか?ご存知でしたらお願いします。

Private Sub CommandButton1_Click()
Dim selectO As Visio.Selection
Dim shapeO1 As Visio.shape
Dim Title As String
Set selectO = Visio.ActiveWindow.Selection
Set shapeO1 = selectO(1)

Title = Me.TextBox1

Dim vsoCharacters1 As Visio.Characters
Set vsoCharacters1 = Application.ActiveWindow.Page.Shapes.ItemFromID(shapeO1.ID).Characters
vsoCharacters1.Text = Title

Unload UserForm2

Dim RV As Variant
RV = Shell("***.vsd", 1)

End Sub

04: 名前:yoda投稿日:2006/01/31(火) 09:22
原因は多分、図形が選択されていないからでしょう。
このコードで試してみましたが、もんだいありませんでしたよ。
vsoCharacters1.Text = Title まではね。

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



159: ショートカットについて  全レス

01: 名前:tomo投稿日:2006/01/27(金) 15:39
こんにちわ。
Windows XP Visio2003 環境であるコードを書いています。
ただ、Visioファイルを保存して、他のアプリケーションを開いて、
Visioファイルを閉じるという簡単なコードなんですが、
マクロの実行では動くのに右クリックのショートカットを使うと上手くいきません。
どなたか解決策をご存知の方がおられましたら、ご教授お願いします。

04: 名前:tomo投稿日:2006/01/27(金) 15:59
yoda様
申し訳ありません。説明不足でした。
コードは以下の通り簡単なものですが、これをショートカットで呼び出すと
"現在実行できません"というエラーが出てしまいました。
他のショートカットは使えるのでショートカットのコード自体に問題は
ないと思うのですが....
どうかお願いします。
Public Sub Macro1()
Application.DoCmd visCmdFileSave
Dim RtnVal As Variant
RtnVal = Shell("***", 1)
Application.DoCmd visCmdFileExit
End Sub

05: 名前:名無しさん投稿日:2006/01/27(金) 16:21
M1号様
すいません。初心者なのでどのように対処したらいいのか...
ショートカットメニューの作成コードは以下のようなのですが何が問題なのでしょうか?
ご教授お願いします。

Private Sub Document_DocumentOpened(ByVal doc As Visio.IVDocument)
Call CreateShortCutMenu
End Sub

Public Sub CreateShortCutMenu()
Dim uiObj As Visio.UIObject
Dim menuSetObj As Visio.MenuSet
Dim menuObj As Visio.Menu
Dim menuItemObj As Visio.MenuItem

Set uiObj = Visio.Application.BuiltInMenus
Set menuSetObj = uiObj.MenuSets.ItemAtID(Visio.visUIObjSetCntx_DrawObjSel)
Set menuObj = menuSetObj.Menus(0)
Set menuItemObj = menuObj.MenuItems.AddAt(0)
Set menuItemObj = menuObj.MenuItems.AddAt(2)

menuItemObj.Caption = "***"
menuItemObj.CmdNum = 0
menuItemObj.AddOnName = "thisdocument.Macro1"
End Sub

06: 名前:yoda投稿日:2006/01/27(金) 16:40
確かに、M1号さんのおっしゃるとおり、シェイプシートに、なんと書いてあるのかが
問題です。それも、提示していただかないと、あいまいになります。
蛇足ですが、マクロを直接動かす場合でも、visCmdFileSaveについては、
すでに、その図面が、現在のフォルダにないと、全く同じエラーメッセージ
がでます。
それから、私のテストでは、visCmdFileExitは、RunmMacro関数だと、
動きませんでしたが、CallThis関数なら、動きました。多分バグかなに
かでしょう。
その場合は、M1号さんのおっしゃるとおり、マクロの書き出しは、
Sub Macro1(shp as visio.shape) とし、
シェイプシートでは、=CallThis("Macro1" , ) とする必要があります。

07: 名前:名無しさん投稿日:2006/01/27(金) 16:42
Visio.Application.DoCmd (1004) でお試し下さい。

08: 名前:yoda投稿日:2006/01/27(金) 17:08
05のコードでは、どこにメニュが追加されるのでしょうか?
私も05のコードを実行してみましたが、分かりませんでした。
また蛇足ですみませんが、
Visioでは、ショートカットメニューとは、マウスの右ボタンを押した
ときに出るメニュー、のことを言うのだと思います。
これは、M1号さんのおっしゃるとおり、シェイプシートのAction
セクションに書き込むものです。

09: 名前:yoda投稿日:2006/01/27(金) 22:04
ようやく、わかりましたー。汗;
05のコードは最後の行が書いてないのですね、
ThisDocument.SetCustomMenus uiObj
このようにすると、マウスの右ボタンで、”***”と言うメニューが
できました。
そこで、Macro1ですが、
Application.DoCmd visCmdFileExit でエラーになりました。
これは、ThisDocument.Close でも、 Application.Quit でも、
全く、同じエラーになりました。
理由は、全く分かりませんが、何か、意図的なものがあるのでしょう。

こういう方法で、ショートカットメニューが作れるのですねー。
ほんとに、知りませんでした。勉強になりました。
回避方法としては、M1号さんのおっしゃるように、
ページシートに対して、CallThisを使うしかないでしょうね。

10: 名前:tomo投稿日:2006/01/28(土) 12:49
yoda様 M1号様
お手数をおかけしました。
CallThis関数を使って試してみます。
有難うございました。

11: 名前:yoda投稿日:2006/01/30(月) 19:30
ここで教えていただいた、ショートカットメニューの作り方を、まとめたものを
アップロードしました。最後に、おまけに、その応用として、シェイプシート
のセルをコピー&ペーストする、ショートカットメニューを作りましたので、
一緒に入れておきました。これは便利そうです。

12: 名前:yoda投稿日:2006/01/30(月) 19:32
ダウンロードはここから、どうぞ。
http://www.mster.co.jp/visiosquare/cgi-bin/cbbs/file/UIOject_ShortCutMenu.lzh [source] [check]

■トップに戻る リロード  全レスを表示



160: SaveAsWebPageについて  全レス

01: 名前:yoda投稿日:2006/01/26(木) 15:27
MicroSoftの英文の掲示板で、複数のViso図面をWebページとして保存
したい、という話題がありました。私は不勉強で、できないと答えてしま
いましたが、実はできるということを、教えていただきました。
それは、Visio2003SDKの中にあるサンプルコードの、
SaveDocAsWebPageを使うことです。
この関数を使えば、複数のVisio図面をバッチモードで、
Webページとして保存することができるほか、
Webページのオプションも選べます。
添付のサンプルマクロSaveAsWebPageBatchModeは、
この図面を、test1.htm,test2.htm,test3.htmの3枚として、
フルオプションで、バッチモードで保存するものです。
バッチモードでは、途中で、ダイアログが表示されません。
こんな、よいサンプルがあるとは、知りませんでした。

02: 名前:yoda投稿日:2006/01/26(木) 15:28
サンプルコードの入った図面を、
http://www.mster.co.jp/visiosquare/cgi-bin/cbbs/file/SaveAsWebPage.lzh [source] [check]
にアップロードしました。

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


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