重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

画像をマクロを使ってエクセルシートに貼り付けようとしています。
2つ質問があります。

下記のマクロをベースとして。
(1)画像の縦横比を固定のまま、貼り付けたい。LockPictureAspectRatio=msoTrueだろうと思うのですが、見つかりません。
   LockPictureAspectRatioは、画像のバケツボタンの fill effect/picture/select picture/insert/ から来ています。


(2)位置をセルを選んで与えたい。つまり、Cell(10,10) --> pointへの変換方法を教えて下さい。
   下のマクロでは、x=100,y=100と与えていますが、これを、セルを選ぶことで与えたいのです。

Sub myMacro()
Dim myPicture As String
Dim a As Object
myPicture = "C:\Documents and Settings\nrjito\My Documents\My Pictures\test.jpg"
Set a = ActiveSheet.Shapes.AddShape(msoShapeRectangle, 100, 100, 300, 300)
a.Fill.ForeColor.RGB = RGB(255, 255, 255)
a.Fill.Transparency = 0
a.LockAspectRatio = msoTrue
a.Fill.UserPicture myPicture
End Sub

よろしくお願い致します。

A 回答 (2件)

(1)


コントロールツールボックスのイメージ枠なら簡単です。
ただし、多用するとファイルサイズが大きくなります。
Sub testイメージ枠に写真()
  Dim myPicture As String
  Dim a As Object

  myPicture = "C:\Documents and Settings\nrjito\My Documents\My Pictures\test.jpg"
  Set a = ActiveSheet.OLEObjects.Add(ClassType:="Forms.Image.1", Link:=False, _
    DisplayAsIcon:=False, Left:=100, Top:=100, Width:=300, Height:=300)
  With a
    .Object.PictureSizeMode = 3
    .Object.Picture = LoadPicture(myPicture)
  End With
End Sub

(2)
Cells(10, 10)の、Left、Topプロパティを指定します。
With Cells(10, 10)
  Set a = ActiveSheet.Shapes.AddShape(msoShapeRectangle, .Left, .Top, 300, 300)
End With

ひとつのセルに収めるなら、Width、Heightプロパティがあります。
With Cells(10, 10)
  Set a = ActiveSheet.Shapes.AddShape(msoShapeRectangle, .Left, .Top, .Width, .Height)
End With

図形に写真を入れるニーズはなんでしょうか?
シートに写真を挿入すれば事足りるのではないでしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございます。
なんとか、なりました。

お礼日時:2008/12/07 21:46

セルとの関連付けは


Cell(10,10).Top
ほかLeft,Height、Widthの4つまたは1つで捉えられる。
画面座標でやるより、フレクシブルだと思う。
>縦横比を固定のまま
は縦横比がわかっているなら、貼り付けてから、WidthとHeightを調節すればよい。
「エクセル 画像 読み込み サイズ」などで照会
セルに関連付けたものが多い。
http://hanatyan.sakura.ne.jp/vbhlp/Excel12.htm ほか
ーー
実際エクセルのシートに読み込まれる(挿入)ときの、元の画像とシートに表示去れるサイズ(圧縮などとの関連も含め)の仕組みも、当然有るとおもうが、WEB上でも情報が少ないと思うが、どうしてもならWEBを調べたら(市販エクセル解説書では載ってないでしょう)。
    • good
    • 0
この回答へのお礼

ありがとうございます。
なんとか、なりました。

お礼日時:2008/12/07 21:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!