問題タブ [shapesheet]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
4165 参照

visio - アクションを Visio に追加する方法 (2003)

Visio シェイプシートでは、アクションを追加できます。別のセルの値 (コントロールの位置) を更新するアクションを作成したいと考えています。どうすればそれができますか。別のマクロが必要ですか、それとも直接指定できますか? そしてどうやって?

0 投票する
1 に答える
5561 参照

vba - VBA の図形間で Visio シェイプシート セクションをコピーする方法

VBA を使用して、ある図形から別の図形にセクションをコピーする方法はありますか? 私は特に、あるページシートから別のページにすべてのカスタム プロパティとユーザー セルをコピーしようとしています。

0 投票する
2 に答える
1062 参照

xml - 信頼できないVisioドキュメントが開かれたときに、Visioに数式を再評価させる方法

Visioの外部にVisioファイル(VDX)を作成するモジュールがあります。SDKによると、これは「信頼できない」XMLを指します。ステンシルからマスターをコピーしてxmlファイルを作成し、XMLスパースファイルを使用してそれらを参照しました。

私のスパースxmlでは、次のようにシェイプの位置とサイズをオーバーライドします。

私の形はサブ形を持つグループです。

動作し、Visioはそれを開くことができますが、サブシェイプにはマスターのデフォルトの幅と高さがあります。また、図形間のリンクが正しくルーティングされません。

同じ新しいファイルをコピーして貼り付けると、期待どおりの結果が得られます。

サブシェイプの幅と高さを強制しようとしました。同じ問題が発生します。

Cellクラスのtrigger()メソッドを明示的に呼び出して、ドキュメントを開くときにVBAコードを使用してみましたが、期待どおりの結果が得られました。それも機能します、私はシェイプシートを開きます。値は黒で表示され、セルでEnterキーを押すだけで、期待どおりの結果が得られます。

この問題についての私の理解は、ドキュメントを開いたときにvisioがサブシェイプの数式を評価しないということです。

残念ながら、セルを強制および更新するためにマクロに依存することはできません。ドキュメントを開いたときに、サブシェイプの数式を強制的に再評価する方法があるかどうかを知りたいです。

前もって感謝します。

エリック

0 投票する
1 に答える
649 参照

hyperlink - VisioShapeSheetセクションが空かどうかを確認するための式

少なくとも1つのハイパーリンクがある場合にのみ有効にするシェイプコンテキストメニューのアクションが必要です([ハイパーリンク]セクションは空ではありません)。

このための公式はありますか?

0 投票する
1 に答える
679 参照

vba - Visio VBAテキストのバウンディングボックスを取得

グループであるVisioに形があります。グループ図形のテキストを編集できます。編集するときは、子図形の 1 つをグループ図形のテキストのすぐ右に配置します。

これを行うために、グループ シェイプを引数として受け取る VBA 関数を作成しました。これは、シェイプシートの TextText イベントで呼び出されます。

そのため、このルーチンはグループ図形で BoundingBox(visBBoxUprightText) を呼び出すだけで、テキストの境界を取得し、サブ図形を bbox の右側に配置します。しかし、境界は間違っているようです。それらは、最後の文字の左側または右側に戻ってくることがあります。

visBBoxUprightText フラグは、レンダリングされたテキスト文字の周囲の四角形の座標を取得する以外の意味があると考えられていますか?

編集: もう少し調べてみると、BoundingBox メソッドが shape.type プロパティを調べて、境界ボックスが囲むものを判断していることがわかります。シェイプ タイプが visGroup の場合、サブ シェイプも含まれますが、グループを単純なシェイプと見なすよう強制するフラグはないようです。

だから私は今、問題は、サブシェイプを無視して、テキストの BoundingBox を取得する方法はあるのでしょうか? テキストを保持するために別のサブシェイプを配置してみましたが、今では魅力的に機能します。

0 投票する
1 に答える
1945 参照

shape - ステンシルで Visio シェイプ グループを非表示にする方法

グループ (sheet.44) にグループ化された、多くの小さな形状 (sheet.6 から 43) を持つ複雑なステンシルがあります。その中にサブグループもあります。

シェイプシートの数式を使用してこのグループを非表示にして、ユーザー プロパティを使用したいと考えています。

単純な形状では、Geometry1.NoShow=sheet.44!user.isHidden Miscellaneous.HideText=sheet.44!user.isHidden を設定します。

しかし、それをすべてのサブシェイプで継承するにはどうすればよいでしょうか? vbaで?

回答付きで編集:

VBA以外に方法がないことを確認してくれたJonに感謝します。これは、同じ問題を抱えているすべての人のための私の VBA コードです。

またね !

0 投票する
1 に答える
2918 参照

vba - VisioでVBAを使用してグループに図形を追加する方法

グループシェイプシートには多くのカスタムプロパティがあるため、グループ化を解除せずに、Visioの既存のグループにシェイプを追加するにはどうすればよいですか。それを使っているサブフォーミュラが壊れてほしくない。

これが私のVBAコードの始まりですが、グループに図形を追加する方法が見つかりません。

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

0 投票する
1 に答える
3491 参照

visio - シェイプ シェイプシート式での Visio Page シェイプシート参照

図形のテキスト フィールドを、それが存在するレイヤーの名前に設定しようとしています (Visio 2010)。式を次のように設定できるはずです。

=ThePage!Layers.Name[レイヤーメンバー]

ただし、LayerMember は文字列であり、形状が複数のレイヤーに存在する可能性があるため、これは機能しません。つまり、3 番目のレイヤーにのみある場合は LayerMember = "3" ですが、3 番目のレイヤーにある場合は "3;2;5" になる可能性があります。異なる層。したがって、LEFT(LayerMember, 1) を使用するとリストの最初の値が取得されますが、それを上記の式のインデックス フィールドに入れても機能しません。インデックス フィールドに静的な値を入力しても問題ありませんが、図形のレイヤーを変更して、図形のテキストをレイヤー名に変更できるようにしたいと考えています。

LEFT(LayerMember,1) を使用すると、文字列が返されます。文字列値を数値に変換して、ページのシェイプシートからレイヤー名の値を取得する方法が見つかりません。

私はVisioを初めて使用していますが、何らかの理由でこれを理解できません。