- ベストアンサー
Bookの更新マクロ
現在、D:¥たかし\撤回18年.xlsで10シ-トほどがひとつになったBook(撤回18年)でデ-タの入力作業をしているのですが、年度が変わるために初期画面上に更新マクロボタンを作り、デ-タが入力されたシ-ト(入力シ-ト)内容をクリアして、同じフォルダ(たかし)内に別のBook名(撤回19年)が出来るマクロを考えているのですが、うまくいきません。 Sub 更新() ' ' デ-タ入力内容を消去 Sheets("入力シ-ト").Select Range("B3:T65536").Select Selection.ClearContents Worksheets("初期画面").Activate Range("A1").Select ’更新後の新しいブック(ファイル)の作成 Workbooks.Add ActiveWorkbook.SaveAs Filename:="D:\たかし\撤回19年.xls", FileFormat:= _ xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _ , CreateBackup:=False End Sub
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#02です。それでは以下でどうでしょう Sub 更新() ActiveWorkbook.SaveAs Filename:="D:\たかし\撤回" & _ Application.Text(Date, "e") & "年.xls" Sheets("入力シ-ト").Range("B3:T65536").ClearContents ActiveWorkbook.Save End Sub 先にRange("B3:T65536")をクリアしたらH18年度のシートのデータを消すことになりますから、うっかり上書きするとデータを消してしまいます。そこでSaveAsしてからH19年のシートのデータをクリアするようにしました
その他の回答 (2)
- zap35
- ベストアンサー率44% (1383/3079)
Workbooks.Add は不要です 以下でどうですか? 前者は撤回19年.xlsが開いた状態になります。後者は撤回18年.xlsだけが開いた状態になります。 でも1年に1回しか行わない処理で、しかもVBAにファイル名を固定で持たせたら20年になるときにはコードを書き変えないとなりませんよ。 ファイル名はDateから取得するほうが、後々使えると思います。 Sub 更新() ' デ-タ入力内容を消去 Sheets("入力シ-ト").Range("B3:T65536").ClearContents ActiveWorkbook.SaveAs Filename:="D:\たかし\撤回19年.xls" End Sub Sub 更新() ' デ-タ入力内容を消去 Sheets("入力シ-ト").Range("B3:T65536").ClearContents ActiveWorkbook.SaveCopyAs Filename:="D:\たかし\撤回19年.xls" End Sub
お礼
早々の回答ありがとうございます。 >20年になるときにはコードを書き変えないとなりませんよ >ファイル名はDateから取得するほうが、後々使えると思います はい。後々使えるようになればと考えてます。 :="D:\たかし\[$-411]ggge"年".xls" でいいんでしょうか。 じゃないですよね。 あつかましくてすみません。ご教授お願いします
補足
早々の回答ありがとうございます。 >20年になるときにはコードを書き変えないとなりませんよ >ファイル名はDateから取得するほうが、後々使えると思います はい。後々使えるようになればと考えてます。 :="D:\たかし\[$-411]ggge"年".xls" でいいんでしょうか。 じゃないですよね。 あつかましくてすみません。ご教授お願いします。
- hana-hana3
- ベストアンサー率31% (4940/15541)
>うまくいきません。 何がどうで「うまく行かない」のでしょうか? >’更新後の新しいブック(ファイル)の作成 Workbooks.Add なら、新規の空のブックが作成され、それが保存されてしまいます。 撤回18年.xlsをひな形にしているのなら、この部分は不要かと思います。
お礼
早々の回答ありがとうございます。 >何がどうで「うまく行かない」のでしょうか? そうですね、すみません。
お礼
ありがとうございました。 希望するものができました。