- ベストアンサー
マクロのことで困っています。
ペイントから切り取った画像を、エクセルに貼り付けて、貼り付けた画像のサイズを変更します。何度も画像の一部を切り取って画像のサイズを変更するので、その手間を省けたらと思います。(要するに 貼り付け→サイズ変更 をしたいのです) 一度マクロ記録で試してみたのですが、実行すると『貼り付けた画像』ではなく『マクロ記録時に選択した画像』が縮小されてしまうのです。かなりわかりづらい説明だとは思いますが、よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
本当だ! ペイントから切り取った場合、必ず左上に貼り付いて、しかもアクティブにならないですね。私はファイルから挿入した画像で試していました。 Sub Macro5() Dim shp As Shape For Each shp In ActiveSheet.Shapes If shp.TopLeftCell.Address = "$A$1" Then shp.Select Selection.ShapeRange.ScaleWidth 0.4, msoFalse, msoScaleFromTopLeft Selection.ShapeRange.ScaleHeight 0.54, msoFalse, msoScaleFromTopLeft End If Next End Sub とするか、サイズ変更したい画像を手で選択してから Sub Macro6() Selection.ShapeRange.ScaleWidth 0.4, msoFalse, msoScaleFromTopLeft Selection.ShapeRange.ScaleHeight 0.54, msoFalse, msoScaleFromTopLeft End Sub ではどうでしょうか? 後者の方が汎用的かもしれません。
その他の回答 (1)
- zap35
- ベストアンサー率44% (1383/3079)
どのような自動記録マクロかを書いていただけたら簡単なのですが、 おそらく貼り付け→サイズ変更を連続して行わなず、一旦図形を手で選択してしまったために ActiveSheet.Shapes("Picture 5").Select のようなPictureの固有名前を持ったマクロができてしまったのではないでしょうか。これだと質問のような現象になることが考えられます。 貼り付け→サイズ変更を連続して行った場合は Sub Macro4() ActiveSheet.Paste Selection.ShapeRange.ScaleWidth 0.66, msoFalse, msoScaleFromTopLeft Selection.ShapeRange.ScaleHeight 0.67, msoFalse, msoScaleFromTopLeft End Sub のようなマクロができるはずです。貼り付け直後は貼り付けた画像が選択された状態になりますから、このマクロなら「貼り付けた画像」をサイズ変更できます。 問題のマクロを補足欄に掲載するか、「貼り付け→サイズ変更を連続して行って」マクロを再度作成してみて下さい
補足
貼り付け直後でも貼り付けた画像が選択状態になりません。。右クリックして貼り付けをしたのですが、どうすれば貼り付けた直後にはすでに画像が選択されている状態にできますか? 本当に初歩的なことですがよろしくお願いします。 ActiveSheet.Shapes("Picture 24").Select ActiveSheet.Paste ActiveSheet.Shapes("Picture 28").Select Selection.ShapeRange.ScaleWidth 0.4, msoFalse, msoScaleFromTopLeft Selection.ShapeRange.ScaleHeight 0.54, msoFalse, msoScaleFromTopLeft こんな感じなのですが、どうすればいいのでしょうか? 聞いてばかりですみません。
お礼
当初質問していたマクロよりも、zap35様が提案してくれた後者のマクロのほうが私にとっては便利なのでとってもよかったです。 ありがとうございます。これでナントカ明日の仕事を乗り切れそうです!! 本当にありがとうございました。<(_ _)>