• ベストアンサー

EXCELマクロ シートの追加、シート名の変更

おはようございます。 1つのブックで1ヶ月分のシートをつくるマクロを考えています。 月次処理シートのA列に例えば8月であれば、 0801 0802 0803・・・と入力。(もしくは0801から0831までをマクロで自動表示) シートを1ヶ月分自動で生成するマクロを実行して、シート名を0801、0802、・・・とそれぞれ自動で変更。 1ヶ月分のブックの完成としたいのですが、どういうマクロを組めばよいでしょうか。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 もう、すでに回答が出ているようですが、私も考えてみました。 欲を言えば、年/月で設定させたほうがよいのですが、今回は、月だけです。 これは、Personal.xls の標準モジュールが良いのではないかと思います。 '----------------------------------------------------------------- Sub DaysMonthAddedSheets() ''シート生成マクロ Dim myMonth As Variant Dim myDate As Date Dim i As Integer, j As Integer Dim m As Integer Dim AcBook As Workbook Set AcBook = ActiveWorkbook '月と日付の決定  myMonth = Application.InputBox("月を入力してください。" & vbCrLf & _  "注意: 出力は、" & Year(Date) & "年の月の日付です", "シート生成マクロ", Type:=2)  If myMonth = "" Or VarType(myMonth) = vbBoolean Then Exit Sub  If Not IsNumeric(myMonth) Then    MsgBox "数字を入れてください。"    Exit Sub  ElseIf 1 > CInt(myMonth) Or CInt(myMonth) > 12 Then    MsgBox "月数が正しくありません。"    Exit Sub  End If    myDate = DateSerial(Year(Date), myMonth + 1, 0)  m = Day(myDate)   'シート生成 Application.ScreenUpdating = False With AcBook   i = .Worksheets.Count   .Worksheets.Add After:=.Worksheets(i), Count:=(m - i)   On Error GoTo ErrHandler   For j = 1 To m   .Worksheets(j).Name = Format$(myDate - m + j, "mmdd")   Next j   '終了後は、1日のシートへ   .Worksheets(Format$(myDate - m + 1, "mmdd")).Select End With Set AcBook = Nothing Exit Sub Application.ScreenUpdating = True ErrHandler:  '再生成のエラー処理  AcBook.Worksheets(Format$(myDate - m + j, "mmdd")).Name = "Temp"  Resume  Err.Clear End Sub '-----------------------------------------------------------------

tabtab9
質問者

お礼

Wendy02さん、こんにちは。 お礼が前後して申し訳ないです。 実行してみました。 相変わらず、すごい!!正直な感想です。 どうもありがとうございました。

その他の回答 (1)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

やろうとしていることがいまいちよくわからないのですが、 1.「月次処理」という名前のシートのA列にmmdd形式で1日から最終日までを自動で記入する。 2.A列に入力した数だけシートを追加しA列セルと同じ名前にする。 というサンプルです。ご参考まで。 Sub test01() m = Application.InputBox("何月分ですか?2006/08のように入力してください。") fd = m & "/01" ld = Day(DateSerial(Year(fd), Month(fd) + 1, 0)) With Sheets("月次処理").Cells(1, 1) .NumberFormatLocal = "mmdd" .Value = fd .AutoFill Destination:=Range("A1:A" & ld) For i = 1 To ld Set ns = Sheets.Add(After:=Sheets(Sheets.Count)) ns.Name = .Offset(i - 1).Text Next End With End Sub

tabtab9
質問者

お礼

>やろうとしていることがいまいちよくわからないのですが いえいえ、つたない説明でここまで完璧なマクロを教えていただきありがとうございました。 非常に助かりました。

関連するQ&A

  • EXCELのシート名を一括変更するマクロ

    マクロの超初心者ですが、EXCELのシート名を一括変更するマクロを考えてます。 例えば、1つのBOOKで「1」~「31」までの名前が入っているシートを予め用意しておいて、マクロを実行するとメッセージボックスがでてきて、そこに200806と入力するとシート名の「1」が『20080601』に、「2」が『20080602』という感じで31日分自動でできるような方法はないでしょうか?いつも手入力でやっていて大変なので、なにか方法があれば教えて欲しいです。お願いします。

  • エクセルマクロでファイル名やシート名変更できない

    エクセルは初心者なのでマクロを自動記録して作成しています。 少しづつ動作を小分けにして記録して、まとめてボタンで連続実行させるようにしました。 (1)作成途中で失敗したら最初からの作業になると思い、 ある程度進んだら何度かファイルのコピーを作成して進めていました。 ある程度完成した時点でファイル名が「○○○4~コピー~」の様な名前だったので、正式に名前を決めて変更したらマクロの実行が出来なくなりました。(元の名前に戻すと実行可能) (2)またシートも複数のシートに跨って参照するようなマクロです。 シート名を分かりやすい名前に変更したらこの場合もマクロ実行できなくなりました。 (3)コピーしたファイルもマクロ実行できないものがあります。 コピーしたファイルはマクロ実行できないのでしょうか? (4)ファイル作成途中で何かの変更が生じて列や行の挿入を行った場合、 特定のセルを参照して計算するマクロは実行できなくなるのでしょうか? その場合、簡単に修正する方法はありますか? 初心者にも分かるような回答をよろしくお願いいたします。

  • エクセル マクロでシート名変更

    Excelで、作成してあるフォーマットに新しく数値をコピーして完成した表を別のブックに移動して保存しようと考えています。その際、シートのA1セルの値を自動的にワークシート名に持ってきたいのですが、やり方が分からず困っています。 シート名のところ以外は、なんとなくマクロの記録を使ってできそうなのですが、A1セルの値を自動的にシート名にすることができずに引っかかっています。 いい方法があれば教えてください。 よろしくお願いいたします。

  • エクセルマクロ シートの追加

    マクロでシートを追加し、シートの名前を変更したくて記録したところ、以下のコードになりました。 しかしながら、2度目に実行すると、sheet2が追加されsheet1が無いためエラーとなります。 2度目に実行してもsheet2のシート名を変更できるようにするには、どうすればよいですか? Sheets.Add Sheets("Sheet1").Select Sheets("Sheet1").Name = "処理結果"

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

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

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

    エクセル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 のような シート名を変更できればすてきだと おもいます。 どうぞ よろしくお願いします。

  • エクセルマクロでシート分けとシート名変更するには?

    商品一覧(2,000件)があり、それを商品グループ毎シート分けし、そのシート名は商品グループ名に変更したいのですが・・・ 過去のものまであるので商品が多いです。商品グループは10グループぐらいですが、フィルタをかけて一つ一つするには時間がかかります。 マクロで一括処理するにはどうしたら良いでしょうか。 列はA~Kぐらいまであります。 ・sheet1商品一覧(列A~Kまで項目があり、この中には商品グループも入っています) ・sheet2商品グループ(A列にグループ名が記入されています) どなたかおわかりになる方、どうぞお教え下さい。 よろしくお願いします。

  • 【Excel】シート名について(マクロ)

    Excel2003を使用しています。 あるマクロで Sheets("2007 年 01 月分").Select の選択するシート名が変更されても、そのシートを選択することはできないでしょうか? 例えば、コードを書いたときのシート名は『2007 年 01 月分』で、上記のようにコードを書いていて、次回、そのマクロを実行するときに、シート名を『2007 年 02 月分』に変更しても、同じ(元の)シートを選択してマクロが実行されるようにしたいのですが、そういうことはできますか? できるかできないかだけでもわかると助かります。 もし、できる場合は、どのようにすればいいのでしょうか?説明が足りないようであれば補足しますので、よろしくお願いします。

  • エクセルマクロ シート名の指定と変更について

    いつもお世話になります。 現在、このような作業をしています。 1.前月と前々月の資料(ファイル名 "資料" シート名 "404" "405")を、計算用シート(ファイル名 "分析" シート名 "計算")に転記する。(手動) 2.月次の分析資料を作る。(マクロ起動) 3.2で作成した資料を、シート名 "000" に転記する。(マクロ) 4.次回の準備として、新しいシートを挿入する。(マクロ終了) 5.3で作成されたシート名 "000" をシート名 "406" に変更する。(手動) 6.5のシート名"406"を、ファイル名"分析"から、ファイル名"資料"に移動する。(手動) 7.4で挿入されたシート名を "000" と書き換える。(手動) 以上の一連の作業の中で、(手動)の部分をマクロで出来るようにしたいのですが、構文がわかりません。 といいますのは、シート名は、各年月の略号をあらわしており、毎月毎月、参照するシート名が変わるのです。(逆に言えばマクロの中で参照シート名を固定できない) そこで、今月のシート名ならば、"406"となりますので、その数字を入力(ファイル名 "分析" シート名 "計算" のセルA1に入力)してやれば、必要なシートが、前月と前々月、"405" "404" と判別できるので、何か方法があると思うのですが、構文がうまくできないので、たずねてみました。 補足しますと、現在、仮の置場的に機能しているシート "000"は、不要になると思います。 どうかよろしくおねがいします。 ちなみにエクセル2003、OS=XPです。

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

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

専門家に質問してみよう