2008年1月9日水曜日

○第73回目 図形編(その11) 画像の貼付け

 エクセルに画像を張り付ける。大変そうな気がしますが、割合簡単です。
 与える情報は、画像のあるパス名と張り付ける場所ぐらいなもんです。
 ただし、画像は大きさが大きいので、縮小して表示することにします。(サイズの変更でも可能です)
 セルにパス名を入れて置きそのセルを指定(複数可)してから実行です。
 サイズは無条件に4分の1とします。
 並べる位置を与えて多少間隔をあけて斜めに並べます。
 同じマクロで追加処理も可能です。

 手順です。
 1.指定範囲の取得とパラメータの取得
 2.画像の貼付け。同時に大きさを取得し大きさを縮小する
 3.貼り付ける位置の指定
 4.画像の整列

 1.は定番ですね。パス名は path_name(100) としました。

2.画像の貼付けです
ActiveSheet.Pictures.Insert(path_name(i)).Select

2-2.大きさの縮小です
hig = Selection.ShapeRange.Height
wid = Selection.ShapeRange.Width
hig2 = Int((hig * ll025 / 100) * 4 + 0.5) / 4  'll025は25のこと
wid2 = Int((wid * ll025 / 100) * 4 + 0.5) / 4
Selection.ShapeRange.Height = hig2
Selection.ShapeRange.Width = wid2
 ※これをFor文で囲ってください。

 3.貼付け先のセル範囲の設定。これもほとんど定番化しています。
Dim セル範囲 As Range
Range(AAA1).Select
Set セル範囲 = Application.InputBox(Prompt:="図形を並べる基準のセルを指定してください", Default:=AAA1, Left:=10, Top:=2, Type:=8)
  aaa2 = セル範囲.Address
 retu2 = Range(aaa2).Column
  gyo2 = Range(aaa2).Row

 4.画像の整列
  6行、3列ずらしで整列しています。
j = ii9 + i
ActiveSheet.Shapes(j).Left = Cells(gyo2 + (i - 1) * ll006, retu2 + (i - 1) * ll003).Left   'll006は6のこと
ActiveSheet.Shapes(j).Top = Cells(gyo2 + (i - 1) * ll006, retu2 + (i - 1) * ll003).Top
 ※これをFor文で囲ってください。
※最初の段階で既存の図形数を取得しておいてください。
ii9 = ActiveSheet.Shapes.Count

【画像の貼付結果とパス名】








 写真入りのレポートなどに使えますね。

 説明文は…。いろいろまだ問題があります。
 エクセルでは、ワードレベルのものが表せません。行間、文字間、文章の連続性などが弱いのです。

0 件のコメント: