- ベストアンサー
Excel VBAでコピー後のワードアート?の名前変更
丸1日以上悩みましたが、解決できないのでご相談させていただきます。 Excel2007です。 複数のワードアートを作成しています。 個々を判別できるよう以下のように名前ボックスで名前をつけています。 内容は、数式バーを「 =商品データ!D2 」として別の入力用シートの値をそれぞれ表示させています。 商品名001 値段001 コメント001 これを、VBAで同一シートの別場所へコピーしたところ、商品名001のワードアートが2つという状態になってしまい、思うように処理ができません。 (数式バーの書き換えもまだ、考えていませんが・・・) (対象データの数だけループさせたいと考えています) ==== コピー元の 価格001 が 価格002 になった。2つ目は変化なし === ActiveSheet.Shapes("価格001").Name = "価格002" コピー完了後は、名前を変更したいワードアートがアクティブなのだと思うのですが、アクティブなワードアートの名前を変更するには、どうすればよいのでしょうか? 参考までに、以下のようなことをしています。 === ActiveSheet.Shapes("価格001").Select 'コピー元を選択 Selection.Copy 'コピー Range("Z13").Select '貼り付け先指定(横へ移動) ActiveSheet.Paste '貼り付け
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
選択状態になっていますから Selection.Name = "商品名002" あるいは、インデックス番号で ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Name = "商品名002" というように出来ます。 Selectしない構文です。 ActiveSheet.Shapes("価格001").Copy ActiveSheet.Paste With ActiveSheet.Shapes(ActiveSheet.Shapes.Count) .Name = "商品名002" .left = Range("Z13").left .Top = Range("Z13").Top End With ただ、上記でも貼り付けられたワードアートは選択状態になります。 名前も、番号の部分をカウントアップする工夫が必要になると思います。 以下、余計なお節介ですが Copyではなく、Duplicateを使ってみてください。 ワードアートも選択状態にすることなく、処理可能です。 構文も、もっと簡単になります。
その他の回答 (2)
- xls88
- ベストアンサー率56% (669/1189)
Formulaプロパティを使えば設定できます。
お礼
あっさりと… ありがとうございます! 助かりました!
- chuchuo
- ベストアンサー率45% (99/217)
一例です ActiveSheet.Shapes("価格001").Select 'コピー元を選択 Selection.Copy 'コピー Range("Z13").Select '貼り付け先指定(横へ移動) ActiveSheet.Paste '貼り付け Selection.Name=Selection.Name & "コピー" ペーストしたShapeがセレクトのうちに コピー元の名前の後に「コピー」という文字を足します。
お礼
早速ありがとうございます。 ActiveSheet.Shapes("価格001").Select Selection.Copy Range("Z13").Select ActiveSheet.Paste Selection.Name = "価格002" で、コピー先の名前が変更できました。
補足
回答ありがとうございます。 Duplicateは、少し調べてみます。 あとは、内容のリンク先?の変更だけです。 Selection.Text = "=商品データ!D3" とすると、しっかりと "=商品データ!D3"と表示されました。 数式バー部分の変更は、どうやるのでしょう…