- ベストアンサー
エクセルマクロで全シートに図の挿入をする方法
- エクセルマクロを使用して、請求書の全シートに角印を押す方法について教えてください。
- 現在、1シート目の名前を'FACE'に変え、'Picture 4'という印を貼り付けるコードを作成しましたが、シートごとに印が重複してしまいます。
- 印を押すためには、印押しBook.xslのシート1に請求書の雛形と角印を用意し、マクロを実行する必要があります。これにより、請求書の全シートに角印を押すことができます。
- みんなの回答 (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」よりもっと分かりやすい名前にしておくと良いかもしれませんね。
その他の回答 (1)
- real beatin(@realbeatin)
- ベストアンサー率82% (174/211)
こんにちは。 オブジェクトや条件分岐の扱い方を主題に 基本的な書き方でお応えします。 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
お礼
If UCase(.Name) <> "FACE" Thenでなるほど!と思いました。 同じ結果を得るのに色々な方法があって奥が深いですね。 ありがとうございました。
お礼
希望通りにの結果が得られました。ありがとうございました。 時間が無く、コードを読み解く事ができませんが >印画像を「Picture 4」よりもっと分かりやすい名前にしておく その通りですね。