2008年3月8日土曜日

○第84回目 図形作成システムの更なる完成度を求めて(その1)

○第84回目 図形作成システムの更なる完成度を求めて(その1)

 いろいろと仕事を実行していきますと、これも必要だということが次から出てきます。システムの完成度を高めるために、取り組まざるをなくなりました。
 今回のテーマは次のとおりです。

 1.図形のサイズ等を合わせる
 2.図形の回転
 3.図形番号の設定の改善
 4.図形のその他の属性の取得
 5.図形のその他の属性により図形を修正
 6.図形情報の一括取(コネクタ情報は除く)

 1.図形のサイズ等を合わせる
 ほかの図形をこの図形と同じようにしたいというニーズがあります。
 対象となるのは、サイズ、色、文字のフォント・サイズ・位置です。
 ここで、操作上の問題が出てきました。今までも潜在的にあったものですが、強調されてきました。
 それは、対象となる図形の番号が飛び飛びになっていますということです。最初からグループごとに並べるように設定しているのですが、順番が崩れてきます。これまでの機能を利用すると、図形番号の並べ替えの機能(第83回)を使えば番号が整理されるのですが、めんどくさいのおっくうになって利用していません。それよりも飛び飛びに番号が指定できるようにしたらどうか、という思いが強まりました。このテーマは次の次に取り上げます。
 "図形のサイズ等を合わせる"のマクロのポイントは、元の図形番号とコピーする図形番号の取得、属性の取得と設定です。今までやっていないのは、属性の取得ということです。
 元になる図形からサイズなどの属性をどう取得するか。試してみたら簡単でした。設定と取得の構文が裏腹の関係になっているだけなのです。
 例えば、サイズの設定は、
  Selection.ShapeRange.Height = hig2
Selection.ShapeRange.Width = wid2
 となっています。
 サイズの取得は、この式を逆にすればいいのでした。
hig2 = Selection.ShapeRange.Height
wid2 = Selection.ShapeRange.Width
他の属性も同じでした。

マクロの流れは、
1.元になる図形番号の設定(既存のもの)
2.元にするサイズ等の取得
3.コピーする図形番号の設定(既存のもの)
4.コピー先の図形のサイズ等の変更
 となりますが、入力と処理を分離して

1.元になる図形番号の設定(既存のもの)
2.コピーする図形番号の設定(既存のもの)
3.元にする図形のサイズ等の取得
4.コピー先の図形のサイズ等の変更
 とします。
 1.の後に、no_orgとして元にする図形番号を確保しておきましょう。

 3.元にする図形のサイズ等の取得は次の通りです。
 順番に縦サイズ、横サイズ、中の色、フォントの種類、フォントのスタイル、フォントのサイズ、文字の縦位置、文字の横位置となっています。
ActiveSheet.Shapes(no_org).Select
hig = Selection.ShapeRange.Height
wid = Selection.ShapeRange.Width
iro = Selection.ShapeRange.Fill.ForeColor.SchemeColor
fo_na = Selection.Font.Name
fo_sty = Selection.Font.FontStyle
fo_siz = Selection.Font.Size
ichi1 = Selection.VerticalAlignment
ichi2 = Selection.HorizontalAlignment

 属性の変更(設定)はこの逆になりますので、既存の"文字の変更"などを参照してみてください。

 2.図形の回転
 現在のシステムでは、大きな右向き矢印を作成できます。これを時と場合によっては、左向きとか、上向きとかに直したい場合が出てきます。これは図形の種類ではなく図形の回転で対応しようとするものです。
 左向きにするには180度の回転、上向きにするには270度の回転、下向きにするには90度の回転となります。
 方向性を持つ図形の場合には便利な機能です。水平の直線が斜め線などにが簡単に変わります。
 ここでその後の操作上の注意点があります。
 一つ目は、回転がかかった図形に更に回転をかけたい場合です。これは原型となる図形に戻ってもらって、指定すればいいことになります。左向きにするにはどんな回転になっていても、180度の回転となるということです。
 二つ目は、図形の縦横のサイズです。回転するとどうなってしまうのかということですが、縦横の大きさは最初の図形にくっつているということです。矢印を長くしたいとすると、原形の図形では横のサイズを大きくすることです。ですから、どのような向きになっても横のサイズを大きくするのです。

 回転のコマンドは至極単純です。
Selection.ShapeRange.Rotation = kaiten
 となります。
 また、コネクタに対しては回転はかけないようにしてください。

 ここまで。

0 件のコメント: