• ベストアンサー

シートをコピー、シート名を変更

Windows8でExcel2000を使っています。 こういうマクロはどう書けばいいんでしょうか? 同一ファイル内で、シートを複数枚コピー。 複数選択したセルに入力された文字列を、上記でコピーされたシート名に反映したい。 「原本」というシート名のシートがあり、それを元に一年分の表を作りたいのですが 今は手で11枚コピーを作った後1枚ずつ名前変更でやっています。 シート名にしたい文字列は現在なら「2015年01月」~「2015年12月」です。 セルに「2015年01月」~「2015年12月」を入力、選択した後マクロ実行で シート名変更に反映できればありがたいです。

  • hn39
  • お礼率95% (67/70)

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

ふつーに、必要な数だけシートのコピーと名前付けを繰り返すだけです。 sub macro1()  dim h as range  on error resume next  for each h in selection   worksheets("原本").copy after:=worksheets(worksheets.count)   activesheet.name = h.value  next end sub >入力、選択した後マクロ実行でシート名変更に反映 記入した内容が「シート名として適切ではない」場合(たとえば同じ名前のシートが既にある等を含む)の処置について考慮されていませんね。 必要に応じて自力で適切に工夫してみて下さい。

hn39
質問者

お礼

keithinさん、ありがとうございます。 書いていただいたマクロを登録しましたらコピーしてくれました。 自分でもやってみたのですが、複数選択したセルに入力された文字を シート名にすることはいろいろ考えてみたいと思います。 Sheets("原本 (2)").Name = "2015年01月" この部分の"2015年01月"などのところを絶対値で指定できれば、とか考えています。 Sub Macro1() Sheets("原本").Select Sheets("原本").Copy Before:=Sheets(1) Sheets("原本").Select Sheets("原本").Copy Before:=Sheets(1) Selection.Copy Sheets("原本 (2)").Select Sheets("原本 (2)").Name = "2015年01月" Range("C3").Select Application.CutCopyMode = False Selection.Copy Sheets("原本 (3)").Select Sheets("原本 (3)").Name = "2015年02月" End Sub

関連するQ&A

  • シートコピーと値の転記 シート名変更マクロを

    エクセル2010で マクロのご教授をお願いいたします。 BOOK1の Sheet1 A1~A10に 数値1000が入力されているとして Sheet1のシートのコピーを作成 Sheet1にもどり A1~A3の値だけコピーして 作業列C1に 値を貼り付け A1~A10 をクリアーにしたのちに  ※↓が うまくいきません。 A1の値→ A8 A2の値→ A9 A3の値→ A10 に入力 させるマクロは どうなるでしょうか? マクロの記録で いろいろと やってみましたが どうも ※の部分が うまくいきません どう考えてもエクセルに対しての 理解不足だと思われますが、ご教授のほどお願いします。 おこなった自動マクロの記録は↓です。 マクロの記録開始する 名前 シートコピー Sheet1を右クリックして移動またコピー コピーを作成にチェックをいれ OK コピーシートが作成される。 Sheet1をクリックしなおして A1からA3をコピー  作業列として C1に 形式を選択して貼り付け 値 A1~A10を delete でクリア C1~C3を選択 コピー A8に 形式を選択して貼り付け 値 マクロの記録終了。 あと Sheet1をコピーするさいに シート名を前日の日付に自動的に変更できればと いいなと 考えておりますが できるのでしょうか? 例えば、本日でいえば シート名→ 0112 のような シート名を変更できればすてきだと おもいます。 どうぞ よろしくお願いします。

  • コピーした文字列を現在開いているシート名にセットしたい

    現在開いているシート名を、クリップボードにある(?)文字列に 書き換える(?)マクロをつくりたいです。例えば、 (1) セルA1に、「aaa111」と入力されているとします。 (2) A1セルをダブルクリック(ないし、数式バーから必要な文字列だけを選択)します。 (3) 「111」だけをコピー(Ctrl+C)します。 (4) 「Sheet1」のタブをWクリックします。 (5) 貼り付け(Ctrl+V)により「Sheet1」が「111」に書き換えられます。 (6) Enterキーで確定します。 参考までに今の動作をマクロ記録してみると、次のようになったのですが、 「111」だけをコピーしたつもりなのに、「aaa111」がクリップボードに 格納されてしまっています。 Sub Macro1()   ActiveCell.FormulaR1C1 = "aaa111"   Sheets("Sheet1").Select   Sheets("Sheet1").Name = "111" End Sub 任意のセルをダブルクリックして 必要な文字列(=シート名にしたい文字列)だけをコピーし、 マクロを実行(ショートカットキーを押下)するだけで サッと書き換わるイメージですが、実現可能でしょうか。 よろしくお願い致します。

  • エクセルの複数のセルの値からシート名を自動変更する

    エクセルのシート名を複数のセルから自動で変更する場合のマクロを教えてください。 E6に「平成」、G6に「年」、I6に「月」、K6に「日」と入力されている状態で、 間のF6、H6、J6が空欄となっており、それぞれに年と月と日を入力するような状態となっています。 このF6、H6、J6に入力した年月日情報をシート名にするようなマクロは可能でしょうか? 「28.2.6」のように。もしくは「280206」のように6桁で。 また、F6、H6、J6の3つとものセルに値を入力した場合に、シート名が変更され、 その後に、それかのセルの情報を変更した場合は、その情報に変更されるようになればありがたいです。 下記のQ&Aが近いのですが、複数セルの情報からシート名を変更する方法が分かりません。 http://okwave.jp/qa/q2025849.html よろしくお願いします。

  • 別のシートにコピーする方法(マクロ)

    シート1 と シート2 を用意します。 シート1には、 A1:B3 の範囲に文字が入力されています(関数の場合あり) A1:B3の範囲(列の場合あり)をコピーして シート2の現在選択されているセルから貼り付けをワンクリックで する方法(マクロ)はありませんか? 私は、マクロはわかりませんが、マクロでしか出来ないようであれば 覚えます。 教えてください。

  • シート名変更のマクロ

    QNo.4400605『エクセルでシート数を指定して挿入するマクロはどうやって作ったらいいでしょうか。例えばA1セルに挿入したいシートの数を入力するとその数のシートが作成されるというようなマクロを作りたいのですが』という質問をしてそれについては解決しましたが、作成されたシートの名前を1~40のような数字に変更するマクロが分かりません。作成するシートの枚数は決まってなく、25シートであったり、40シートだったりします。A1:A40に1~40と変更後のシート名を入力して、それをシート名に反映させるマクロは作れたのですが、毎回シート枚数が変わるので「インデックスが有効範囲にありません」と出てしまいます。型としては、元シートがあり、そこでシート数を指定しシートを挿入し、そのできたシートに数字の名前をつけたいと考えています。長々なりましたが教えて下さい。

  • VBA シート名とファイル名とフォルダ名を一度に変更したい

    こんばんは。 現在のアクティブセルに入力された文字列「(例)0001」を入力するとシート名、ファイル名、フォルダ名が変更するVBAを作成しています。 シート名の変更は出来たのですが、ファイル名とフォルダ名の変更が上手くいきません。 大変恐れ入りますが、伝授いただけないでしょうか。 よろしくお願い致します。 Sub シート名変更() Dim シート名 As String シート名 = ActiveCell.Value If シート名 = "" Then MsgBox "文字列を含むセルを選択してください。" Exit Sub End If ActiveSheet.Name = シート名 End Sub

  • 【VBA】シート名をセルに入力すると、そのシートのコピーを実行させるには?

    【条件】 1.仮に「合計」というシートに、追加されるシートのあるデータをコピーしたい。 2.別シートに一定のフォームの集計データが入っているので、このシート名を変更して「A」という名前に変更する。そして、「合計」の入っているブックに移動する。 3.「合計」のA1のセルに「A」という入力をしマクロを実行すれば、「A」のシートの一定のRangeから、合計の任意の場所にコピーをするマクロをつくりたい。 4.このフォームは年間同じフォームで20回発生するがそのたびに、同じような作業が必要となります。 (シートにコピーする作業は、やめて、ブックの別ファイルのあるシートから、ある一定のRangeをコピー元として、「合計」にコピーするでも問題ないです)。 If ~ Elseif ~、myRange = A1で作っても、そのmyRange = A, Elseif = B、と延々につくらなければならない(=たぶんこれは原始的なのだと自認しています)のがはがゆく、 シート名が”文字列(または数字)”の場合、その”文字列(または数字)”をもつ、ブックまたはシートから、コピーを実行というコードをつくりたいのです。 よろしくお願いいたします。

  • (VBAにて)シート間のコピーの文字数限界ついて

    質問が抽象的ですみませんが、質問させて頂きますので 宜しくお願いします。 (まだVBAの日が浅い者です。) ・Excelにて障害管理表というものを作成しています。(sheet1に)  ・発生日時や障害内容などが列ごとに管理されている表です。  ・各項目名がA3~Y3で各データがA4~Y60まで入力されています。)  ・今後も障害が発生することにより、行数が増えていきます。 ・sheet2について  ・マクロ用の専用シートにしています。  ・コマンドボタンを作成し、そこにマクロ文を挿入しています。  ・マクロ文の内容は、sheet1の[F列:発生日時]をキーにして、   sheet2の「セルA1→開始年月]「セルB2→終了年月]を入力して   コマンドボタンを押す  ・sheet1よりsheet3に指定した期間内のみデータを表示させる。 というのが大筋の内容です。 大体うまく行きましたが、1つだけ問題点が出ました。  ・[sheet1のP列]には対応内容のデータが入力されています。  ・sheet3のP列にほぼコピーは出来たのですが、2件ほどが   sheet3のP列に反映されず、空白のままとなってしまいます。  ・調べてみると、2件ともかなりの文字数がsheet1のP列に入力されていました。  (実際は) マクロ文を実行すると、下記のエラーが出て処理がSTOPしてしまいます。   「実行時エラー'1004': アプリケーション定義またはオブジェクト定義のエラーです。」        ↓ (P列の長い文字数をsheet1~sheet3へコピーする所です。 ですので、「On Error GoTo 0~On Error Resume Next」コマンドを使用してエラーを吹っ飛ばして処理を続行しています。(2件は反映されませんが。) ・シート間でセル内容をコピーする時の文字数の限界ってあるのでしょうか? ・また、どのようにすれば解消されるでしょうか?    ・因みに、sheet1の例の2件の文字数をかなり削除したらうまく行きました。)    ・sheet1の例の2件の文字数を削らず、sheet3のP列の文字を小さく設定してもセルを最大に広げてもダメでした。) 長くなって申し訳ありませんが宜しくお願い致します。 

  • EXCEL シート名を自動変更するマクロ

    いつも御世話になっています。 質問内容ですが、特定セルに入力した値を特定のシート名に反映させるマクロについてです。 例えば、 Sheet1のセルA1に「会議室」と入力した場合、Sheet5のシート名が「会議室」となり、 Sheet1のセルA2に「休養室」と入力した場合、Sheet7のシート名が「休養室」となる。 というようなものです。 (※Sheet番号は連番になっていません) なお、シート名変更用の入力シートはSheet1のみです。 できれば、各シート名を変更する際、以下のようにしたいと考えています。 Sheet5 元シート名:負荷計算(1)            ↓ Sheet5 変更後シート名:"Sheet1のA1で入力した名前" 負荷計算    教えて頂けると助かります。 宜しくお願いします。

  • エクセルのハイパーリンクのシート名の一括変更(再)

    いつもお世話になります。 先日ここでハイパーリンクを張ったシートのコピーについて教えてもらったのですがダミーシートで試してみたらうまくいくのですが、本番のシートで複数枚コピーしてみたらやっぱり最初のシート(コピー元)の指定のセルに飛んでしまうのですが、何が違うのか分かりません。 教えていただいた方法は、 セルを右クリックでリンクを張るのではなく、「ハイパーリンク関数を使って =HYPERLINK("#A1","ABC")とリンクを貼ると、シート名が入らないのでシートをコピーしてもそのシートの指定のセルに飛びます」というものです。 なぜシート名が入っていないのに違うシートのセルに飛ぶのでしょう?

専門家に質問してみよう