- ベストアンサー
エクセル2007を使ったワードアートのコピー貼り付けについて。
エクセル2007を使ったワードアートのコピー貼り付けについて。 エクセルを開くとシート2の(B2)、シート3の(C3)、シート4の(D4)、シート5の(E5)にワードアートで作った「注意」の文字が貼ってあります。使うにはこの文字を消して使いたいと思います。ただしシート5の分だけは消さないで残しておき(シート非表示)エクセルを閉じる直前にそれを利用して、シート2からシート4の元の位置に貼っておきたいと思います。自動マクロでは作れなかったのでどうしたらよいのでしょうか。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
コピーしてシートに貼り付け後、所定の位置に移動 ..という考え方で良いと思います。 Sub try_1() Dim r As Range 'Shapeの名前を確認してください。もしくは任意でつけるか。 Sheets("Sheet5").Shapes("正方形/長方形 1").Copy With Sheets("Sheet2") Set r = .Range("B2") .Paste With .Shapes(.Shapes.Count) .Left = r.Left .Top = r.Top End With End With With Sheets("Sheet3") Set r = .Range("C3") .Paste With .Shapes(.Shapes.Count) .Left = r.Left .Top = r.Top End With End With ': ': Set r = Nothing End Sub マクロ記録されない事のささやかな対策としては Sub try_2() Dim ws As Worksheet Dim r As Range Dim s As Shape Set s = Sheets("Sheet5").Shapes("正方形/長方形 1") s.Copy Set ws = Sheets("Sheet2") Set r = ws.Range("B2") ws.Paste With ws.Shapes(ws.Shapes.Count) .Left = r.Left .Top = r.Top End With ': ': Set r = Nothing Set s = Nothing Set ws = Nothing End Sub ..など、型を明示した変数にセットし、 s. 入力後ポップアップされる「入力候補」や 「プロパティ/メソッドの一覧」を参考に、 「ヘルプ」や「オブジェクトブラウザ」を駆使しながら コーディングしていくような感じになるかと思います。 もしくは2010からシェイプ関連のマクロ記録が復活してますから バージョンアップを検討されても良いかもしれません。 #そのうち2007でもサポートされる可能性はあるのでしょうかねぇ...
お礼
回答いただいてから30分後に新規ブックで試してみましたら完璧に希望通りでした。作成中のブックに当てはめて行うと「指定された値は境界を超えています」のメッセージと、フォームで作ったボタンが移動したりしてうまくいきません。作成中のブックは自分でもよく把握できない程ゴチャついている状態なので数日苦闘していましたが理由はわかりませんでした。別の方法で注意書きがでるよう考えてみます。回答いただいたマクロは非常にわかりやすく簡潔に書かれていて初心者の自分でも理解ができて非常に参考になり素晴らしく思いました。次回作成にはもっと整理したブックで使わせていただこうと思っております。誠にありがとうございました。お礼が遅くなり申し訳ございません。