こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

EXCEL VBA 初心者です。
とても困っています。
助けてください。

excel2010を使っています。

今,「原本」というシートがあり,それをマクロを使って同じブック内にコピーしたいと思っています。

コピーして新しく作られたシートの名前は「A1」のセルに入力されている値にしたいです。

コピーされた後のシートにはマクロボタンは削除したいと考えています。

また,コピーした後のアクティブシートは「原本」のシートにしたいのですが

これを全部いれたコマンドはどのようになるのでしょうか。
似たような質問だったり,回答があるのですが,
どのように組み合わせたらいいのかよく分かりません。
どなたかお助けいただけないでしょうか。
よろしくお願いします。

投稿日時 - 2012-11-20 10:21:34

QNo.7806740

すぐに回答ほしいです

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

こんばんは。

こちらも、#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枚ずつです。シート名が同じですとコピーできません。

投稿日時 - 2012-11-21 19:50:55

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

調べればすぐに判ると思うんですが・・・。

シート上のオブジェクトは

ActiveSheet.DrawingObjects.Delete

で、全部消えると思うんですけど・・・。

投稿日時 - 2012-11-20 13:51:09

ANo.2

別に、一つ一つ考えれば難しいコードじゃないかと。
要は「コピーを掛けておいてからシートを追加する」って
手順に気づくかどうか・・・って話じゃないかと。

今現在、「原本」シートがActiveだとして・・・。

Cells.Select
Selection.Copy

' これで、シート全体をコピーですよね

Sheets.Add
ActiveSheet.Paste

' これで追加したシートに全体を貼り付けられるかと

ActiveSheet.Name = Range("A1").Value

' これで「追加したシート」のセルA1の内容がシート名に

Sheets("原本").Activate

' で、「原本」を選択して終わり

こんな感じですかね。テストして無いので動作するかは
判りませんけど、発想はこれで行ける筈。

投稿日時 - 2012-11-20 12:13:06

補足

早速の回答ありがとうございます。

試してみて新しいシートの作成は指定したセルの名前でできました。

しかしマクロボタンまでコピーされてしまいます。

シートのコピーを複数枚行いたいのでコピーしたときにマクロボタンの削除まで
同時に行いたいのですがいい方法を御存じないでしょうか。

投稿日時 - 2012-11-20 13:18:22

ANo.1

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

投稿日時 - 2012-11-20 10:46:49

あなたにオススメの質問