- 01: 名前:visGeek投稿日:2006/04/23(日) 22:10
- コピー元ページの全シェイプを
コピー先ページの同じ位置にDropする機能を作成しています。
コードは下記の通りですが、コピー元ページに
ガイドや動的コネクタが含まれている場合に、
不正な場所にDropされることがあるようです。
ガイドがある場合には必ず不正で、コネクタの場合には
形状によって不正になったり正常になったりする気がします。
原因・回避方法などわかりましたらアドバイスをお願いします。
なお、シェイプを1つずつDropする方法は接着が維持されないのでNGです。
'コピー先にある既存のシェイプを全消去
Dim sl As Selection
Set sl = pgTo.CreateSelection(visSelTypeAll)
sl.Delete
'コピー元の全シェイプ
Set sl = pgFrom.CreateSelection(visSelTypeAll)
Dim dLeft As Double, dBottom As Double, dRight As Double, dTop As Double
sl.BoundingBox visBBoxExtents, dLeft, dBottom, dRight, dTop
Dim dXPos As Double, dYPos As Double
dXPos = (dLeft + dRight) / 2
dYPos = (dBottom + dTop) / 2
'ガイドや動的コネクタがある場合に不正な場所にドロップされることがあるが、回避方法不明
On Error Resume Next
pgTo.Drop sl, dXPos, dYPos 'ここで無意味なエラーが発生する
On Error GoTo 0
- 02: 名前:yoda投稿日:2006/04/24(月) 18:54
- 私も、以前このようなことで、だいぶ悩みました。
http://www32.ocn.ne.jp/~yoda/VISIO/Visio_Cpy_Paste.htm [source] [check]
に、以前作成した、コピー&ペーストのソフトがあります。
これは、マウスで指示した点に貼り付けるものですが、
X、Yに、0を入れ、別のページを開いて、「貼り付ける」を押せば、
選択した複数の図形が、同じ座標に複写できます。
今、簡単なテストをしたところでは、ガイドやコネクタがあっても、
正確に複写できるようです。細かいことは、忘れてしまいまし
たので、すみませんが、ダウンロードして、ごらんになってみて
ください。
- 03: 名前:visGeek投稿日:2006/04/26(水) 20:35
- 私のコードではずれが生じる図面でも
yoda様のソフトを使用すると正常に貼り付けられました。
コードの方、追って確認させていただきます。
ありがとうございました。
■トップに戻る リロード 単独スレ表示
|