• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL VBA シートの名前を指定してコピー)

EXCEL VBAシートの名前を指定してコピー

このQ&Aのポイント
  • EXCEL VBAを使用して、指定したシートをコピーする方法について困っています。新しく作られたシートの名前は、「A1」のセルに入力されている値にしたいです。
  • また、コピー後に作成されたシートにはマクロボタンを削除したいと考えています。
  • さらに、コピー後のアクティブシートを「原本」のシートにしたいのですが、どのようなコマンドを組み合わせればよいか分かりません。助けていただけないでしょうか。

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

  • ベストアンサー
回答No.4

こんばんは。 こちらも、#2/3さんのお考えの他にないかと作ってみました。それで、シートコピーを考えてみたのですが、マクロ自体をコピーしてはダメだと分かりましたので、Cells.Copy しかないようです。 以下は、ActiveX コントロール側のボタンのみに対応します。ActiveX コントロールのみ複数あっても全部消えてしまいます。 だから、必ず、ActiveX コントロール側のボタンにしてください。 原本シートにCommandButtonを貼り付け、それをダブルクリックすれば、マクロの起動部分が出来上がりますので、その中身のコードを貼り付けてください。 '// Private Sub CommandButton1_Click() '←既存  Dim shName As String  Dim dummy As Variant  If Range("A1").Value = "" Then Exit Sub  shName = Range("A1").Value  On Error Resume Next  dummy = Worksheets(shName).Range("A1").Value  If dummy <> "" Then MsgBox shName & " has been existed!", vbCritical: Exit Sub  On Error GoTo 0  Cells.Copy  Worksheets.Add After:=Worksheets(Worksheets.Count)  With ActiveSheet    .Name = shName    .Paste    .OLEObjects.Delete    .Range("A1").Select  End With  Application.CutCopyMode = False End Sub '←既存 '// 単純な内容ですが、Excel 2003 とは、何かが違うようです。今回、初めて、Excel 2010 で作りました。なお、エラーメッセージは、英語で出ています。 _____ " has been existed!" ○○は、すでに存在します! という意味です。 >シートのコピーを複数枚行いたいのでコピーしたときに コピーはシート1枚ずつです。シート名が同じですとコピーできません。

その他の回答 (3)

  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.3

調べればすぐに判ると思うんですが・・・。 シート上のオブジェクトは ActiveSheet.DrawingObjects.Delete で、全部消えると思うんですけど・・・。

  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.2

別に、一つ一つ考えれば難しいコードじゃないかと。 要は「コピーを掛けておいてからシートを追加する」って 手順に気づくかどうか・・・って話じゃないかと。 今現在、「原本」シートがActiveだとして・・・。 Cells.Select Selection.Copy ' これで、シート全体をコピーですよね Sheets.Add ActiveSheet.Paste ' これで追加したシートに全体を貼り付けられるかと ActiveSheet.Name = Range("A1").Value ' これで「追加したシート」のセルA1の内容がシート名に Sheets("原本").Activate ' で、「原本」を選択して終わり こんな感じですかね。テストして無いので動作するかは 判りませんけど、発想はこれで行ける筈。

thunder_black52
質問者

補足

早速の回答ありがとうございます。 試してみて新しいシートの作成は指定したセルの名前でできました。 しかしマクロボタンまでコピーされてしまいます。 シートのコピーを複数枚行いたいのでコピーしたときにマクロボタンの削除まで 同時に行いたいのですがいい方法を御存じないでしょうか。

  • NYAN99
  • ベストアンサー率35% (32/90)
回答No.1

答えを出すのは簡単ですが、それでは勉強になりません。 その動作をマクロの記録でやってみて、どういうプログラムをマクロが作成するか見て、 自分で関数とか調べてみたらいかかでしょうか。

関連するQ&A