- ベストアンサー
エクセルVBA・画像を張り付けるコードについて
- エクセルVBAで画像を張り付けるコードに関して、問題が発生しています。
- カメディアソフト上で画像を選択しないでマクロを実行すると、前回の画像が貼り付いてしまう問題があります。
- これを防ぐためには何らかの方法が必要です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
難しく考えると大変なので、 Range("A1").Copy Range("A1") を最後に入れてみてください。(A1のセルでなくてもいい) Sub 画像貼付() Range("B1").Select On Error GoTo ERA ActiveSheet.Paste Selection.ShapeRange.Height = 200 Selection.ShapeRange.Width = 200 Range("A1").Copy Range("A1") ERA: End Sub
その他の回答 (2)
- misatoanna
- ベストアンサー率58% (528/896)
#1です。 常に空白のセルを使えば、#2様のご回答が簡単ですね。 (^^) > Microsoft Forms 2.0 Object Library がありません。 環境がExcel2000です。 新しいバージョンでは、2.0の部分が異なるかもしれません。
お礼
度々のご回答ありがとうございます。
- misatoanna
- ベストアンサー率58% (528/896)
クリップボードを空にする方法がわかりませんので、少し強引な内容です。 VBEditor の [ツール]-[参照設定] で、次の項目を選択しておいてください。 ・Microsoft Forms 2.0 Object Library Sub 画像貼付() Dim obj As DataObject Range("B1").Select ActiveSheet.Paste On Error GoTo Er Selection.ShapeRange.Height = 200 Selection.ShapeRange.Width = 200 Set obj = New DataObject obj.SetText "" obj.PutInClipboard Er: On Error GoTo 0 End Sub <内容> 画像を貼り付けた後に、クリップボードに "" を送っておきます。 次に、別な画像を選択しないでマクロを実行すると、"" が貼り付くことに なりますが、これは画像でないため、Selection.ShapeRange.Height = 200 で エラーが生じます。そこで終了処理に回します。
お礼
ご回答ありがとうございます。 >VBEditor の [ツール]-[参照設定] で、次の項目を選択しておいてください。 >・Microsoft Forms 2.0 Object Library エクセル2007を使用していますが、これがありません。 なぜでしょうか?
お礼
ご回答ありがとうございます。 希望どおりになりました。 また、コードの意味も理解できました。