VBでエクセルに貼り付けた図の編集をするには?

解決


SUGI  2004-07-14 16:53:59  No: 114799  IP: [192.*.*.*]

VBで「Pictures.Insert」を用いてエクセルに
図を貼り付けたのですが、この図の貼り付け位置と、
サイズをVB上で変更させるには、どのようにしたら
よろしいでしょうか?

編集 削除
特攻隊長まるるう  2004-07-14 17:45:26  No: 114800  IP: [192.*.*.*]

マクロの記録はしたの?
[Excel Macro]
    ActiveSheet.Shapes("Picture 1").Select
とか
    Selection.ShapeRange.IncrementLeft -144#
    Selection.ShapeRange.IncrementTop -61.5
    Selection.ShapeRange.ScaleHeight 1.04, msoFalse, msoScaleFromTopLeft
    Selection.ShapeRange.ScaleWidth 1.09, msoFalse, msoScaleFromBottomRight
とかを参考にすれば何とかなるんじゃない?

編集 削除
SUGI  2004-07-14 18:05:18  No: 114801  IP: [192.*.*.*]

>Selection.ShapeRange.IncrementLeft -144#
>Selection.ShapeRange.IncrementTop -61.5
>Selection.ShapeRange.ScaleHeight 1.04, msoFalse, msoScaleFromTopLeft
>Selection.ShapeRange.ScaleWidth 1.09, msoFalse, >msoScaleFromBottomRight

上記のようにしたら一回目はできましたが、Formを立ち上げたまま
続けて2回目を実行したところ、エラー438が表示され
Selectionの行の部分が黄色くハイライトされました。
これは一回目の処理が終わった時点で、Selectを
解除する必要があるのでしょうか?

よろしくお願いします。

編集 削除
特攻隊長まるるう  2004-07-15 09:23:38  No: 114802  IP: [192.*.*.*]

実行時エラー '438': オブジェクトは、このプロパティまたはメソッドをサポートしていません。
…でしたっけ?。対象となるオブジェクトにプログラムで使っている
プロパティやメソッドが無いですよ〜って事だから、Selection の
対象が変わっちゃったんでしょ?
>Selectionの行の部分が黄色くハイライトされました。
その時点で Selection の対象が何になっているか確かめて下さい。

…っつーかマクロはあくまで参考にするだけで Selection なんて
対象が何か分からない上にいつ変更されてもおかしくないものを
プログラム側で使うなんて事は、普通しません。
Shape オブジェクトか ShapeRange コレクションが対象みたい
だから参照する変数を定義してその変数のプロパティを変更して
下さい。

また、Excel 関係のオブジェクトを参照する場合はオブジェクト
参照をちゃんと開放しないとプロセスが残る場合があるので気を
つけましょう。
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200407/04070050.txt

編集 削除
SUGI  2004-07-15 10:55:10  No: 114803  IP: [192.*.*.*]

特攻隊長まるるうさん
ご回答ありがとうございます。

>Shape オブジェクトか ShapeRange コレクションが対象みたい
>だから参照する変数を定義してその変数のプロパティを変更して
>下さい。

度々お聞きして申し訳ありませんが、上記のようにやってみたところ
「エラー13  型が一致しません」と表示されました。
コードは以下のようにしてみましたが、どこが誤りなのでしょうか?
よろしくお願いします。
  
  Dim xlSheet As Excel.Worksheet
  Dim tmp As Shape
  Dim PathName as String

  PathName = "C:\tmp\test.jpg"

  Set tmp = xlSheet.Shapes.AddPicture _
   (FileName:=PathName, linktofile:=True, _
   savewithdocument:=False, Left:=Selection.Left, _
   Top:=Selection.Top, Width:=100#, Height:=100#)

編集 削除
特攻隊長まるるう  2004-07-15 11:48:07  No: 114804  IP: [192.*.*.*]

[VB6.0]と[Excel]の Shape は全然違うものです。
当然、型は一致しませんが?
    Dim tmp As Excel.Shape

編集 削除
SUGI  2004-07-15 19:47:44  No: 114805  IP: [192.*.*.*]

特攻隊長まるるうさん
度々ご回答頂きありがとうございました。
VB初心者であるため、まだ分からないことだらけですが、
今後自力で回答が見つけられるよう、勉強していき
たいと思います。

編集 削除