新しく質問する

エクセルで貼り付けた写真のサイズを減らすためにコピーしましたが、位置がうまく行きません

役に立った:0件
  • 質問者:sintaro-hosome
  • 投稿日時:2009/09/21 19:19
  • 困り度:すぐに回答が欲しいです
  • 友達に紹介
  • ブログに書く
  • 教えて!gooお気に入り

 以前、エクセルにマクロで貼り付けた写真のサイズを減らすために、コピーする方法を教えて頂いたのですが、
下のように書いたコードでは指定した位置にコピーの写真が貼り付きません。
 どこがおかしいのでしょうか?

sFile = pathname & "\" & filemei & ".jpg"
Set myPic = ActiveSheet.Pictures.Insert(sFile)
j = ((2 * i) \ 10) * 2 + 2 ←表示させたいセルの行
k = (2 * i) Mod 10 + 2   ←表示させたいセルの列

With myPic.ShapeRange
  .Left = Cells(j, k).Left
  .Top = Cells(j, k).Top
  .LockAspectRatio = msoFalse
  ' ↓サイズを指定
  .Height = Cells(j, k).Height
  .Width = Cells(j, k).Width
End With
myPic.Locked = True

'上の写真をコピーして貼り付け、下の写真を削除する
With myPic
  .Copy
  ActiveSheet.Pictures.Paste
  .Left = Cells(j, k).Left
  .Top = Cells(j, k).Top ←このセル位置にコピーを貼り付けたいのですが
  '元の写真を削除
  .Delete
End With

 以上のようなコードです。
 コピー元の写真は指定どおりの位置に表示された後削除されますが、
コピーした写真は全て最初のコピー位置に張り付いてしまいます。
 画像の扱いをよく理解していませんのでおかしな所も多々あると思いますが
よろしくお願いします。

この質問への回答は締め切られました。
このQ&Aは役に立ちましたか?(役に立った:0件)
  • 参考になった:0件

No.1ベストアンサー20pt

  • 回答者:watabe007
  • 回答日時:2009/09/22 07:36

新たに貼り付けた写真の位置指定をすれば良いです。
>With myPic
>  .Copy
>  ActiveSheet.Pictures.Paste
>  .Left = Cells(j, k).Left
>  .Top = Cells(j, k).Top  '元の写真を削除
>  .Delete
>End With

With myPic
  .Copy
  Set myPic2 = ActiveSheet.Pictures.Paste
  myPic2.Top = .Top
  myPic2.Left = .Left
  '元の写真を削除
  .Delete
End With

通報する

この回答へのお礼

 watabe007さん、いつもありがとうございます。
 
これでうまく行きました。

>Set myPic2 = ActiveSheet.Pictures.Paste
でコピーした画像のpictureオブジェクトを新たに作ってやる必要が有ったということですね。

 また、何かありましたらよろしくお願いします。
どうもありがとうございました。

  
このQ&Aは役に立ちましたか?(役に立った:0件)

このページのトップへ

Facebook公式ページ

公式Twitter