• ベストアンサー

シートを任意の日付で自動で作成したい

1月分平日のみのシートを4桁の数字で作成したいと思います。 (平日とは土日・祝日など任意の日を除いた日) 例えば、2006年5月であれば 0501 0502 0508 0509 0510 0511 0512 0515 0516 0517 0518 0519 0522 0523 0524 0525 0526 0529 0530 0531 のシートを自動で作成したいです。 VBAの知識はまったくありません。 どうすれば自動でコピーして同じシートをこれらの名前で作ることができるでしょうか?

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

自動作成って言う時点でマクロ(VBA)が必要です。 シートを作って名前を変えるだけならこんな感じです。 祭日は対応してません。 Sub Test() Dim sd, ed, cnt  sd = Application.InputBox("yyyy/m/d", "日付", Type:=2)  If Not IsDate(sd) Then Exit Sub  sd = DateValue(sd)  ed = DateSerial(Year(sd), Month(sd) + 1, 0)  On Error Resume Next  For cnt = sd To ed    If Weekday(cnt, vbMonday) < 6 Then     Worksheets.Add after:=Worksheets(Worksheets.Count)     ActiveSheet.Name = Format(cnt, "mmdd")    End If  Next cnt End Sub

r2san
質問者

お礼

ご回答ありがとうございました 書いていただくと何となく意味はわかるのですが、0からつくるのは無理そうです。 いただいたプログラムを入れてみて勉強させていただきます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

VBAの知識なしでは、自動でではできません。 関数でシート名を変えられません。シート名は、セルの「値」では無いですから。この辺をよく認識してください。何か気の効いたことをやろうとすると、VBAが必要になります。エクセルに限らず何でも教えてもらったことを理解するにも勉強が必要な場合が多い。 Sub tetst01() ym = InputBox("yyyy/mm") sn = Sheets.Count - 1 d = DateValue(ym & "/1") dl = DateSerial(Year(d), Month(d) + 1, 1) - 1 For i = d To dl If Weekday(i) > 1 And Weekday(i) < 7 Then sn = sn + 1 Worksheets.Add after:=Worksheets(sn) Sheets(sn + 1).Name = Format(i, "mmdd") MsgBox i & " " & Weekday(i) End If Next i End Sub yyyy/mm年月は2006/6のように答えてください。

r2san
質問者

お礼

大変参考になりました。 必要は発明の母ですね。 マクロを自由に操れたらおもしろいだろうなと感銘を受けました。 これから少しづつ学んでいこうと思います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 自動でシートを作成するには?

    ブックを開くと自動でシートを作成したいのですが、日付が21日になったら新しくシートを作成するようにするにはどうしたらよいでしょうか? 使用しているのはエクセル2003です。 VBAを使用し、月が替わるたびにシートを作成するようには出来たのですが、21日になるたびに作成する方法がわかりません。 VBA初心者です。 よろしくお願いいたします。

  • エクセル シート自動作成

    A1に2016年、B1に8月などと入力した時 A2~A15に日付を自動出力 B2~B15に曜日を自動出力 C2~C15に文字列&日付で自動表示するファイルを作成しました A1 2016年 B2 8月 A列  B列  C列 1日 月曜日 名前8月1日 2日 火曜日 名前8月2日 3日 水曜日 名前8月3日 ・ ・ C列のC2~C15の名前でシートを自動的に作成出るようにしたいのですが たとえばボタンを作成しボタンを押したときにシートが自動的に作成される または年と月を入れた際に自動的にシート作成されるようにしたいのですが さらにシートは原本を作っているのでそれをもとにコピーされるように したいのですが? どうすればいいでしょうか? お手数ですが宜しくお願いします。

  • エクセル マクロでシート自動作成と日付入力

    マクロでシートの自動作成するのに悩んでいます。 下記の二つを条件を入れるにはどうしたらいいですか? 1、コピーしたシートの日付を明日の設定する。 2、過去のシートを開いても日付を変えたくない。 コピー元のシートを"原本"という名前にしてます。 アドバイスよろしくお願いします。

  • エクセルでシートの自動作成方法を教えて下さい。

    お忙しいところすみませんが、どなたかご教授下さいましたら幸いです。 まず、現在どのような使用方法かというと以下の通りです。 (1)エクセルブック1枚で30名ほどのスタッフの日にちごとの1ヶ月間のスケジュール管理をしています (2)予定を作成した日にちをシートに"2009/8/28"とふる (3)翌日にはシートをコピーし(土日は行わないことがある)、変更になった箇所のみを変更し、シートを"2009/8/29"とふる そして、当方が自動でしたい事は上記(3)の翌日になった場合若しくはブックを開いた際に、自動で前日若しくは直近の日付のシート(土日は更新しないので、土日の日付が入力されているシートがないため)をコピーしシート名を当日(YYYY/MM/DD)とふる。しかし、当日にエクセルを何回も開いたり閉じたりするので、その際に何回も当日のシートが自動作成されては困る。 以上となります。どうぞ宜しくお願い致します。

  • 任意のシートから別のシートにコピーするマクロについて

    任意のシートから別のシートにコピーするマクロについて Excel2007を使っています。 一つのファイルで任意のシートから別のシートの任意のセルにデーターを1000ケタ以下切り捨てでコピーする方法を教えてください。

  • Excelシートの自動コピーでマクロを使いたい

    表題通り、Excelシートの自動コピーをマクロを使って行いたいのですが、 マクロやVBAの知識が全くないため、どなたかコードを教えていただけないでしょうか。 まず今現在、B1セルに9月1日と日付を入れ、シート名を1日としたものがあります。 これを自動で複製して、B1セルの日付を9月2日 9月3日… シート名を2日 3日…となるように、日毎ごとの一ヶ月分のシートを作り ひとつのbookにしたいと考えております。 また、その際に、B1セルとシート名の日付が日曜・祭日に当たる場合、 シート名に色を付けたいと思っています。 (因みにB1セルの日付はシリアル値で入れていて、 書式で○月○日となるように表示していて、日付が日曜・祭日に当たる場合は 赤文字になるよう、別シートに祝日リストも作って 条件付き書式で設定してあります。) Excelの関数は使えても、マクロは全く分からないので どうかよろしくお願い致します。

  • 自動でのカレンダー作成について

    エクセルで、シートごとに月別のスケジュール表を作りたいです。 例えば、4月シート 横軸に会議名を記入し、それぞれ当てはまる日付に時間を入れます。 (セルA2/1日)(セルB2/日曜) (セルA3/2日)(セルB3/月曜)とし、土日祝日に塗りつぶしで色を入れる このような表で、月をセルA1に入れた場合、 自動で日付の右セルに曜日を入れること、土日祝日に塗り潰しの色を入れるには、どのようにしたらいいでしょうか? 質問の内容がわかりにくかったら申し訳ありませんが、よろしくお願いします。

  • エクセルのシートを自動でコピー

    エクセルの2000を使用しています。 こんなことが出来るかどうか教えてください。 「原紙」というシートをコピーして自動的に6月だったら6月1日から30日までのシートを作成したいのです。シート名は6月なら20070601とか日にちのわかるような表示のシート名にしたいのです。 毎回コピーをとってシート名を変更しているのですが、これが結構手間がかかってしまします。 宜しくお願いします。

  • ワークシートを自動でコピー&ワークシート名を自動変更

    こんにちは はじめまして エクセルのワークシートを自動でコピーするやり方を教えていただけますでしょうか。 やりたいことは以下の通りです。 週報のマスターがありまして、1ファイルで1週間分である5シート、マスターからコピーしています。 今現在は雛形ワークシートを一つ作り、手動でワークシートを5日分をコピーし、ファイル名は「名前2008年6月23日-2008年6月27日.xls」という名前で保存してあります。 週報なので、ワークシート1つに月日を入れており、シート内のA1にも年月日を入れております。 ワークシートのイメージとしてはこんな感じです。↓ シート名:週報マスター.xls ワークシート名:「雛形」 ---------------------------- 2008年**月**日 勤務時間: 作業内容: ・・ ・・ ・・ ---------------------------- そしてこれの「雛形」を、自動で1週間分(5ワークシート)、ワークシートをコピーするようにしたいのです。(今は手動でやってます) WebでVBAの記事を読んで、指定した枚数コピーできることはわかったのですが、A1セルに日付を入れ、日付ごとのワークシート名をつける、 その週をどう指定するのかが不明です。 長文になってしまいましたが、どなたか教えていただけると助かります。 よろしくお願いいたします。

  • Excelマクロで任意の項目の数値を自動コピー

    【要望】 Excelのマクロを使用して、任意の項目の数値を、任意のセルへ自動的にコピーしたいです。 さらに、マクロを実行した日付を判別して、データの抽出するセルを自動的に変えるようにしたいです。 【具体例】 マクロを組むことで、Sheet1の「*」の部分にSheet2の数字を参照して、自動的にコピーをするようにしたいのです。 さらに、実際に1月1日の日時にマクロの実行を行えば「1月1日」のデータをコピーし、 次の日、1月2日にマクロの実行を行えば「1月2日」のデータをコピーするようにしたいのです。 ////////////////////////// <Sheet1>         1月1日 1月2日   A社実績    *     *   B社実績    *     * <Sheet2>         1月1日 1月2日   B社       目標    1     1     実績    1     1   A社     目標     1     1     実績     1      1 ////////////////////////// 【問題点】 (1)Sheet2はSheet1とフォーマットが違うため、単純なセル番地の参照では、思い通りに行かない。 (2)マクロを実行する日時によって、異なる作業を行うマクロにしたいが、思い通りに行かない。 【ヒント】 教えて頂く側の立場がヒントを出すなんて大変恐縮ですが、TODAY関数をうまく利用すればできるのでしょうか...?? 以上です。 よろしくお願いします。

専門家に質問してみよう