• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルマクロ 全シートに図の挿入をしたい)

エクセルマクロで全シートに図の挿入をする方法

このQ&Aのポイント
  • エクセルマクロを使用して、請求書の全シートに角印を押す方法について教えてください。
  • 現在、1シート目の名前を'FACE'に変え、'Picture 4'という印を貼り付けるコードを作成しましたが、シートごとに印が重複してしまいます。
  • 印を押すためには、印押しBook.xslのシート1に請求書の雛形と角印を用意し、マクロを実行する必要があります。これにより、請求書の全シートに角印を押すことができます。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

各シートで「Picture 4」の有無を手がかりにします。 sub macro1()  dim myTop as single, myLeft as single  dim w as worksheet  mytop = worksheets("FACE").shapes("Picture 4").top  myleft = worksheets("FACE").shapes("Picture 4").left  worksheets("FACE").shapes("Picture 4").copy  on error goto errhandle  for each w in worksheets   w.shapes("Picture 4").top = mytop   w.shapes("Picture 4").left = myleft  next  exit sub errhandle: ’Picture 4の無いシートにPicture 4を貼り付ける  w.paste  resume end sub コツが掴めたら,印画像を「Picture 4」よりもっと分かりやすい名前にしておくと良いかもしれませんね。

111mimi111
質問者

お礼

希望通りにの結果が得られました。ありがとうございました。 時間が無く、コードを読み解く事ができませんが >印画像を「Picture 4」よりもっと分かりやすい名前にしておく その通りですね。

その他の回答 (1)

回答No.1

こんにちは。 オブジェクトや条件分岐の扱い方を主題に 基本的な書き方でお応えします。 Sub ReW9134729() Dim myTop As Single, myLeft As Single   With Sheets("FACE").Shapes("Picture 4")     myTop = .Top     myLeft = .Left     .Copy   End With Dim Sht As Worksheet   For Each Sht In Worksheets     With Sht       If UCase(.Name) <> "FACE" Then         .Paste         With .Shapes(.Shapes.Count)           .Top = myTop           .Left = myLeft         End With       End If     End With   Next End Sub

111mimi111
質問者

お礼

If UCase(.Name) <> "FACE" Thenでなるほど!と思いました。 同じ結果を得るのに色々な方法があって奥が深いですね。 ありがとうございました。