エクセルで貼り付けた写真のサイズを減らすためにコピーしましたが、位置がうまく行きません
以前、エクセルにマクロで貼り付けた写真のサイズを減らすために、コピーする方法を教えて頂いたのですが、
下のように書いたコードでは指定した位置にコピーの写真が貼り付きません。
どこがおかしいのでしょうか?
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
以上のようなコードです。
コピー元の写真は指定どおりの位置に表示された後削除されますが、
コピーした写真は全て最初のコピー位置に張り付いてしまいます。
画像の扱いをよく理解していませんのでおかしな所も多々あると思いますが
よろしくお願いします。
回答(1件)
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示
No.1ベストアンサー20pt
新たに貼り付けた写真の位置指定をすれば良いです。
>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オブジェクトを新たに作ってやる必要が有ったということですね。
また、何かありましたらよろしくお願いします。
どうもありがとうございました。
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示











