- ベストアンサー
Excelでセル上の画像を別のセルにコピーする方法とは?
- Excelでセル上の画像を別のセルにコピーする方法について教えてください。
- セル上の画像を別のセルにコピーする方法がうまくいかない場合の対処法を教えてください。
- 画像をコピーした後に、コピー先のセルの高さと幅にフィットさせる方法について教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>1. そうです。 >2. こんな感じです。 Sub macro() Dim C As Shape, N As String For Each C In ActiveSheet.Shapes If C.TopLeftCell.Address = "$A$1" Then N = C.Name Exit For End If Next C MsgBox N End Sub
その他の回答 (2)
- kybo
- ベストアンサー率53% (349/647)
ボタンもあったのですね。 では、こういうのはどうでしょうか? ActiveSheet.Shapes("図 6").Select With Selection.ShapeRange.Duplicate .LockAspectRatio = msoFalse .Top = Range("C1").Top .Left = Range("C1").Left .Height = Range("C1").Height .Width = Range("C1").Width End With
- kybo
- ベストアンサー率53% (349/647)
Excelのバージョンは2007でしょうか?2010では問題ありません。 以下の様にしてみて下さい。 ActiveSheet.Shapes("図 6").Copy Range("C1").Select ActiveSheet.Paste ActiveSheet.Shapes(ActiveSheet.Shapes.Count).LockAspectRatio = msoFalse ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Top = Range("C1").Top ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Left = Range("C1").Left ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Height = Range("C1").Height ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Width = Range("C1").Width
お礼
kyboさん、回答ありがとうございます。バージョンを書き忘れていましたが、2007です。 教えていただいたコードを試してみました。ところが位置や幅のプロパティの設定がどういうわけか貼り付けた画像でなく同じシートにあるコマンドボタンに働きかけてしまい、コマンドボタンがセルC1の中にすっぽり収まっていました。 ActiveSheet.Shapes.Countは必ずしも直近に追加されたオブジェクトを指すとは限らないのでしょうか・・・。
お礼
kyboさん、今回はうまくいきました! 教えてくださいばかりで申し訳ないのですが、 1.With Selection.ShapeRange.Duplicateとすると、 コピーした方の図を指すという理解で合っていますか。 2.最初にShapes("図 6")と決め打ちしましたが、 A1セルに(左上が)ある図の名前を取得することはできますか。 For Each XXX In ActiveSheet.Shapes ・・・ Next 上記のコードでシート全体の図を全部チェックしてそれらの位置するセルを取得というのは可能かと思うのですが、「A1セルにある図」でピンポイントで探すことは可能でしょうか。
補足
↓の質問1だけ解決です。検索してみたらShapeRange.Duplicateで「オブジェクトを複製し、複製への参照を返します。」とありました。