- ベストアンサー
EXCEL VBAシートの名前を指定してコピー
- EXCEL VBAを使用して、指定したシートをコピーする方法について困っています。新しく作られたシートの名前は、「A1」のセルに入力されている値にしたいです。
- また、コピー後に作成されたシートにはマクロボタンを削除したいと考えています。
- さらに、コピー後のアクティブシートを「原本」のシートにしたいのですが、どのようなコマンドを組み合わせればよいか分かりません。助けていただけないでしょうか。
- みんなの回答 (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)
調べればすぐに判ると思うんですが・・・。 シート上のオブジェクトは ActiveSheet.DrawingObjects.Delete で、全部消えると思うんですけど・・・。
- FEX2053
- ベストアンサー率37% (7991/21371)
別に、一つ一つ考えれば難しいコードじゃないかと。 要は「コピーを掛けておいてからシートを追加する」って 手順に気づくかどうか・・・って話じゃないかと。 今現在、「原本」シートがActiveだとして・・・。 Cells.Select Selection.Copy ' これで、シート全体をコピーですよね Sheets.Add ActiveSheet.Paste ' これで追加したシートに全体を貼り付けられるかと ActiveSheet.Name = Range("A1").Value ' これで「追加したシート」のセルA1の内容がシート名に Sheets("原本").Activate ' で、「原本」を選択して終わり こんな感じですかね。テストして無いので動作するかは 判りませんけど、発想はこれで行ける筈。
- NYAN99
- ベストアンサー率35% (32/90)
答えを出すのは簡単ですが、それでは勉強になりません。 その動作をマクロの記録でやってみて、どういうプログラムをマクロが作成するか見て、 自分で関数とか調べてみたらいかかでしょうか。
補足
早速の回答ありがとうございます。 試してみて新しいシートの作成は指定したセルの名前でできました。 しかしマクロボタンまでコピーされてしまいます。 シートのコピーを複数枚行いたいのでコピーしたときにマクロボタンの削除まで 同時に行いたいのですがいい方法を御存じないでしょうか。