• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBA・画像を張り付けるコードについて)

エクセルVBA・画像を張り付けるコードについて

このQ&Aのポイント
  • エクセルVBAで画像を張り付けるコードに関して、問題が発生しています。
  • カメディアソフト上で画像を選択しないでマクロを実行すると、前回の画像が貼り付いてしまう問題があります。
  • これを防ぐためには何らかの方法が必要です。

質問者が選んだベストアンサー

  • ベストアンサー
  • kybo
  • ベストアンサー率53% (349/647)
回答No.2

難しく考えると大変なので、 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

taka1012
質問者

お礼

ご回答ありがとうございます。 希望どおりになりました。 また、コードの意味も理解できました。

その他の回答 (2)

回答No.3

#1です。 常に空白のセルを使えば、#2様のご回答が簡単ですね。 (^^) > Microsoft Forms 2.0 Object Library がありません。 環境がExcel2000です。 新しいバージョンでは、2.0の部分が異なるかもしれません。

taka1012
質問者

お礼

度々のご回答ありがとうございます。

回答No.1

クリップボードを空にする方法がわかりませんので、少し強引な内容です。 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 で エラーが生じます。そこで終了処理に回します。

taka1012
質問者

お礼

ご回答ありがとうございます。 >VBEditor の [ツール]-[参照設定] で、次の項目を選択しておいてください。  >・Microsoft Forms 2.0 Object Library エクセル2007を使用していますが、これがありません。 なぜでしょうか?

関連するQ&A