• 締切済み

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

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

noname#101710
noname#101710

みんなの回答

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.4

#02です VBAは久方ぶりだったのでミスしました。4行目は  nmSheet = Format(Date + 1, "YYYY-MM-DD") が正しいです。 すみません

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

>コピーしたシートの日付を明日の設定する。 どういう意味? シート名に日付文字列を入れたいのか? ブックには作成日付などあるが、シートには無い。セルの値を日付を入れたいのか。 しっかり質問内容を表現してください・ シートの名前のことなら下記のコードを実行すればわかるだろう。 Sub test01() MsgBox Date MsgBox Date + 1 MsgBox Format(Date + 1, "yymmdd") a = #12/31/2009# MsgBox a MsgBox a + 1 MsgBox Format(a + 1, "yymmdd") End Sub わざと年末の例も挙げておいた。 シートの何処かのセルの値のことなら、やはり上記で判るだろう。 >過去のシートを開いても日付を変えたくない これも可笑しな表現。 将来そのシートを見てもその日に変わらない、というべき。 マクロでセルの値を設定すれば(関数と違って)セルの値は変わらないよ。 ただしイベントプロシージャ(自動実行)の中でDateを使うと、将来その日に変わる。 >コピー元のシートを"原本"という名前にしてます 何の関係があるのかな。 コピー元のシート名と、コピー先のシート名は関係ないはず。 関係持たせたいなら、質問に層初めから書くこと。 ーーー 明日の名前のシートを自分が指定するVBAの中で作るなら Sub test02() Worksheets.Add.Name = Format(Date + 1, "yymmdd") End Sub これで良いのか。 ーーー しかし挿入の操作の都度ということになると難しい。 シートを挿入するとき ThisWorkookのイベントの Private Sub Workbook_NewSheet(ByVal Sh As Object) MsgBox "AAA" End Sub は反応するが、シートの移動またはコピーのコピーでは反応しないようだ。 だから別途コピー以下をボタンのクリックイベントなどで、自分のコードで面倒を見ないと(記述し実行しないと)ダメかもしれない。操作者がシートをコピーしたとき、というイベントがエクセルに無い。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

とりあえず新しいブックに「原本」という名前のシートを作成して、以下のマクロを実行してみてください。 「原本」シートを複写して、シート名が「実行した日+1」のシートを作成しますが、既に同名のシートがある場合は何もしません。 もし解釈が違っていたらごめんなさい。 Sub Macro1() Dim nmSheet As String Dim idx As Integer  nmSheet = Format(today + 1, "YYYY-MM-DD")  For idx = 1 To ThisWorkbook.Worksheets.Count   If Worksheets(idx).Name = nmSheet Then Exit Sub  Next idx  Worksheets("原本").Copy after:=Worksheets("原本")  ActiveSheet.Name = nmSheet End Sub ただしシート数が多くなったときなどのエラー処理は組み込んでいませんから、ずっと使っているとエラーになる可能性はあります。 エラー処理は必要に応じて適宜組み込んでください。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

質問内容がよくわかりません。 >1、コピーしたシートの日付を明日の設定する。 シートの日付というのはシート名ということでしょうか? 単純にDate+1にすれば明日の日付が取得できると思うのですが・・・ >2、過去のシートを開いても日付を変えたくない。 どうしてシートを開くと日付が変わってしまうのでしょうか? 現在どのようなマクロが設定されていて、どの部分が問題になっているのか、ポイントを絞って、シート構成やセル位置などを含め、できる限り具体的に質問するようにして下さい。

関連するQ&A

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

    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の名前でシートを自動的に作成出るようにしたいのですが たとえばボタンを作成しボタンを押したときにシートが自動的に作成される または年と月を入れた際に自動的にシート作成されるようにしたいのですが さらにシートは原本を作っているのでそれをもとにコピーされるように したいのですが? どうすればいいでしょうか? お手数ですが宜しくお願いします。

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

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

  • Excelで、既に作成してある月別Sheetを呼び出すマクロを作りたい

    Excelで、既に作成してある月別Sheetを呼び出すマクロを作りたいのですが教えて下さい。 2ヶ月に1回のゴルフ会の成績表を作成するのに、 1月成績、1月転記、3月成績、3月転記というように12のSheetが作ってあります。 当該月分の入力準備表を(Sheet 7月成績)に2ヶ月前の(Sheet 5月転記)のSheetを丸ごとマクロでコピーをしたいのです。  この7月と入力したら、(7月成績)のSheetを呼び出し、コピー元のSheet(5月転記)をマクロに記入出来るように設定したいのです。 例えば、   1(月)と入力したら、    11月転記Sheetから自動コピーの指定        3(月)と入力したら、     1月転記Sheetから自動コピーの指定        7(月)と入力したら、     5月転記Sheetから自動コピーの指定     年間6回の作業となります。 初心者の私が、自動記録でマクロを記入したところ、下記のようになり、同じ作業をするのに各月ごとのマクロ6本を作る必要があり、不便なので何とか1つのマクロで処理が出来ればと思い、その方法を教えて頂ければ幸いです。    Sub Macro1() ' 入力準備表作成 ' Macro1 Macro ' ' Keyboard Shortcut: Ctrl+a ' Sheets("5月転記").Select  ← 7月と入力した場合、自動的に5月転記となるように  Cells.Select Selection.Copy Sheets("7月成績").Select Cells.Select ActiveSheet.Paste Range("E5:F5").Select Range(Selection, Selection.End(xlDown)).Select Application.CutCopyMode = False   ・・・・・・

  • エクセル(2000)のマクロについて

    sheetaaa~(複数シート)~sheetZZZをすべて選んでこれらのシートのコピーを、他のブックに作成するというマクロを自動保存で作りました。出来上がったマクロをみるとコピーするシート名がひとつひとつマクロの中にかかれてしまいます。sheetaaaとsheetZZZはいつもコピーするので問題ないのですが、、間に入っているシートは数がどんどん増えていくので、マクロの中でおのおののシート名を指定してしまうのは困るのです。 マクロを実行した際に、sheetaaaとsheetZZZの間あるシートは無条件でコピーを作成するというマクロを作成したいのですが、どのように作ったらいいのかわかりません。 どなたかアドバイスいただけないでしょうか。

  • エクセル:シートを増やす際の日付更新について

    エクセルのテクニックはほぼ素人の者ですが、 上司より日報や顧客管理シートを作るよう指示されたため、マクロを少しずつ利用し始めました。 本題の質問なのですが、日報管理に関しては「原本」シートを作成し、「シート追加」のボタンを日々押して新たなシートを作成して蓄積する方法が良いと考え、なんとかそこまでは初心者ながら作成出来ました。 が、日付に関して困っています。 原本には「TODAY関数」を入れており、追加されたシートで関数の入ったセルをコピー → 値として保存の操作で希望の形に出来るのですが、シート名も日付に合わせた形→ActiveSheet.Name = Range("A3") のように設定しても、そもそも(/)が残っているので上手くいきません。 ただの文字列にしようとしてもシリアル値に変わってしまうため、これまた上手くいきません。 追加したシートのシート名を手打ちで打ち直す方法をとればいいだけの話ですが、方法があればご教授頂きたく存じます。 よろしくお願いいたします。

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

    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の知識はまったくありません。 どうすれば自動でコピーして同じシートをこれらの名前で作ることができるでしょうか?

  • EXCELマクロ ループする方法について

    EXCELマクロ ループする方法についてです。 お世話になります。 教えてください。 EXCELのマクロについてです。 Sheet1のB4から下方に30程度の名前が並んでいます。 名前は毎回変わり、人数も変わります。 他に「原本」というSheetがあります。 行いたいことは、原本のシートをコピーしてシートの名前を Sheet1のB4から下に順番に変更していきたいのです。 当初、B4からの順番に新しいSheetを作りSheetの名前を変更して 原本からコピー(書式、数式、列幅、値等)しようと試みましたが 数式や値はコピーできましたが列幅などがコピーできません。 そこで原本を「シートのコピー」で新しいコピーした Sheetを作り名前をB4に変更する。 それをB列が空欄になるまでループさせる。という方法を 考えましたが、「空欄になるまで」という 記述がわかりません。 教えていただければ助かります。 よろしくお願いします。

  • エクセルマクロ

    入力したワークシートを 新しいブックにコピーして保存するマクロを作成しました。 ただ下記の様に保管すると、 数式もそのまま元のエクセルファイルの数式を参照してしまいます。 下記のマクロをあまり変更しないで、 値貼付け(もしくは値貼付けしながら、新しいブックへコピー) するにはどの様に変更するといいでしょうか? よろしくお願いします。 'Sub newfilesave() Sheets("Sheet1").Copy '名前を付け、ファイル形式も決めてデスクトップに日付を付けて保存する。。 'ActiveWorkbook.SaveAs _ ' Filename:="C:\Users\xxxxx\Desktop\" & Format(Now(), "yyyymmdd_hhmm"), _ ' FileFormat:=xlOpenXMLWorkbook 'End Sub

  • エクセル シート自動 マクロ

    以前作っていたエクセルの自動シートです http://okwave.jp/qa/q9223527.html 今回別のエクセルを作ることになり 助けてほしいのですが シート1 名簿 A1に「=TODAY()」いれ日付表示  B列 C列  D列   E列以降に非表示にして隠しておく             変更があるときにボタンで再度表示して入力する 1 氏名  ボタン1 (生年月日・年齢・基礎体重・身長・握力・など)  2 氏名  ボタン2 (生年月日・年齢・基礎体重・身長・握力・など)  3 氏名  ボタン3 (生年月日・年齢・基礎体重・身長・握力・など)  4 氏名  ボタン4 (生年月日・年齢・基礎体重・身長・握力・など)  5 氏名  ボタン5 (生年月日・年齢・基礎体重・身長・握力・など)  のみ記載がある シート2 情報原本 それぞれの項目がある C1氏名・C2生年月日・C3年齢・C4基礎体重・C5血圧など D1   D2  ・・・・  などいろいろ情報を記入する場所を作る予定 シート1 それぞれボタンを作成 ボタン1~5をそれぞれ押した時、シート2(情報原本)をコピーして別シートにして 新しく名前を付けそれぞれのボタンに記録されている基本情報(氏名・生年月日・年齢 ・目標体重)が自動的に指定されたところに入力され作成されるものを作りたいのですが 毎日それぞれ人の情報シートを作り管理していこうと思っているため ボタン管理できたらうれしいのですが 助けてください

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

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

専門家に質問してみよう