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

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

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

EXCEL VBA 初心者です。 とても困っています。 助けてください。 excel2010を使っています。 今,「原本」というシートがあり,それをマクロを使って同じブック内にコピーしたいと思っています。 コピーして新しく作られたシートの名前は「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% (7987/21353)
回答No.3

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

  • FEX2053
  • ベストアンサー率37% (7987/21353)
回答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

  • EXCEL  VBA シートコピー、名前変更他

    EXCEL  VBA (1)シートコピー、名前変更 (2)他の固定のbookへ転送をVBAで記述 book1のsheet1を開き、そのsheetをコピーしたものをABCというsheet名に替え、 それをbook2のsheetの後ろへ移動するというマクロをPersonalに作ろうとしていますが、 インデックスエラーとか【アプリケーション定義または、オブジェクト定義のエラー】とかインデックスエラーとか になります。 book1のsheet1とかは、マクロを使う場合は、固定的な名前でなくいろいろそのときどきでかわる名前ですが、 マクロを使って、そのsheetをコピーしたものをABCとしてbook2のsheetの後ろへ移動したいということです。 よろしくお願いします。

  • excelでマクロシートをコピーしたとき

    excelでbook1のsheet1のセルA1に「1」を入力→プリントアウト→A1に「11」を入力→プリントアウト・・・以下「31」まで繰り返し。 というマクロが組んであります。 (ボタンにマクロが登録されています。) このシートをbook2にコピーをしたときに マクロを実行する(ボタンを押す)とbook1が開いてしまいます。 これをbook1を開かずにbook2でマクロを実行するには どのようにしたらよいでしょうか。 book2でマクロを作成し直して さらにボタンにマクロを登録していますが、 bookの数が多いのでけっこうな手間になります。 簡単な方法があれば教えて下さい。

  • VBA=エクセルシートの削除方法のプログラムについて

    エクセルシートの削除で、メイン以外の「コピー等で作成されたシートを全部削除」することは出来ますか? 出来るとすれば、どのようなVBAになりますか? 例えば、「原本」という名前のエクセルシートはどのような場合でも保存しておきたく、 原本以外に原本のコピー等で「カナ並替」「住所並替」等々のシートを作成したとします。 「カナ並替」「住所並替」等々のシートをそのまま残しておきますと、あとから追記入力しようとした人が、原本以外に入力してしまうミスを防ぎたいのです。 VBAでエクセルシートの名前で指定してデリートすればシートの削除が出来るのは分かっているのですが、「原本以外」という くくりで削除できる方法を知りたいのですが-・・・・数式で表せば「≠」ということになりますが・・この場合ですとシートが何枚出来ても一発で「原本以外」は全て削除されますので、非常に有効と考えています。 よく分からないのでよろしくお願いします。

  • エクセルのVBAで新しくブックを開いた上でさらに…

    エクセルのVBAで新しくブックを開いた上でそのブックにVBAを埋め込む事はできますか? 分かりにくいと思うので具体的にかきます。 今、ブック1にコマンドボタンAがあり、このボタンAを押す事により 以下の2つを実現したいです。 (1)あたらしくブック2を開きます。 (2)更にこのブック2のシートにはコマンドボタンBができており (3)このボタンBの機能としてこのボタンBを押すと  ブック2のセルA1に数字1が入ります ブック2が開いた後で自分で、コマンドボタンBのマクロをブック2のモジュール内に書くのは簡単ですが、ブック1のコマンドボタンAを押したときに自動的にブック2のマクロを書き込みたいのです。 今、ボタンAを押すことで(1)と(2)まではできるのですが (3)のやり方がわかりません。 そもそもこういった事はできないのでしょうか? ご存知の人がいたら教えてください。よろしくお願いします。

  • エクセルのシートを、新しいブックにコピーするとき・・・

    エクセルのシートを、新しいブックにコピーするとき、セルに入力されている数式ではなく、表示されている値だけコピーする方法があれば教えてください。

  • (VBA)指定のシートを名前をつけて保存

    VBA初心者でExel2010を使用してます。 下記条件でご教示願います。 1つのブックの中に複数シートがあり、ActiveXコントロールのオプションボタンにて選択された シートだけを新しいブックにコピーし、名前を付けて保存したいです。  ・コピーは値と数値の書式のみ貼り付け  ・新しいブックはマクロ無し  ・シート名は”A””B””C””D””E””F””G”  ・オプションボタン名はシートAが”OPTION BUTTON1”~シートGが”OPTION BUTTON7” 以上、よろしくお願いします。               

  • Excel 違うBookのシートをコピーする

    Excelでわからないことがあり質問させていただきました。 原紙のBookに 資料のBookのシートをコピーさせたいのですが 資料Bookには シートが sheet1~sheet50まであり 原紙のBookにマクロのボタンやフォームを作成し 毎回資料のBookの違うシート名を選択しコピーをさせることは可能なのでしょうか? たとえば 原紙のシートに入力フォームを作り sheet名を入力 → 「コピー」のボタンを押すとコピーができる。 といった感じに・・・ フォームでなくてもリストなんかでもいいのですが・・・

  • エクセルVBA シートの追加と名前の変更

    エクセルに「原本」シートがあり、マクロを実行すると原本シートを5シート(5日分)追加し、 (1)一つ目に追加したシートのB2のセルに「追加する日の日付け」を入力し、 シート名にその日付をyymmdd形式で名前を付け、 (2)二つ目に追加したシートのB2のセルに「追加する日の次の日の日付け」を入力し、 ・・・同様の処理・・・ (6)一つ目の追加したシートをアクティブシートにする。 というように、連続した5日分のシートを追加したいと考えています。 VBAの全くの初心者ですので教えていただけると大変助かります。 そんな素晴らしいことが短時間で教えていただけるものなのでしょうか。

  • (エクセル)別のブックにシートをコピーすると

    初めて質問します。 EXCEL2000で、VBAとテンプレートが同じブックに保管されています。(test1.xls) test1.xlsのユーザーフォームでデータを入力して、コマンドボタンを押すと、テンプレートが別ブックにコピーされ、セルが埋められるようにしたいのですが、テンプレートにシート間参照(temp!A1)を使っているので、コピー元のブックを参照するように書き換えられてしまいます。([test1.xls]temp!A1) がんばって検索したのですが、回避策を見つけることができませんでした。 よろしくお願いします。

  • ExcelのVBAで名前を付けて保存

    ExcelのVBAで名前を付けて保存としたいのですが、ユウザーフォーム上のテキストボックスに保存する名前を入力したらコマンドボタンでブックが終了するマクロを教えてほしいのですが。 よろしく御教授願います。

専門家に質問してみよう