• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:応用TODAY関数)

TODAY関数の応用方法と日付の保存

saku07の回答

  • saku07
  • ベストアンサー率10% (4/38)
回答No.3

こんなのはいかがでしょう。  マクロを実行すると日付が更新されて保存される(上書き保存の確認有)  前提条件として、(1)日付の変わるワークシートが開いていること (2)日付を入力するセルをアクティブにしておくこと  以下マクロの記述  sub 日付()   ファイル = ActiveWorkbook.FullName   日付 = Selection   Selection.FormulaR1C1 = "=TODAY()"   Selection.Copy   Selection.PasteSpecial Paste:=xlPasteValues   Application.CutCopyMode = False   ActiveWorkbook.SaveAs Filename:= _     ファイル, FileFormat:=xlNormal _     , Password:="", WriteResPassword:="",    ReadOnlyRecommended:=False, _     CreateBackup:=False  End Sub

関連するQ&A

  • 応用today関数

    TODAY関数を使ったとき、前回保存した日付が1/1だったとすると、次に開いたとき日付は1/1から変わらず 保存をすると、日付が今日の日付になるようなことはできますか? と上記を質問した所、 --------------------- 関数ではちと無理っぽいですね。 ではこうしましょう。 1.AltキーとF11キーを一緒に押してください。VBエディター画面となります。 2.画面左側のVBAProjectのThisWorkbookをダブルクリックします。 3.右側の白い部分に下記をコピーして貼り付けます。 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Sheets("Sheet1").Range("A1") = Date End Sub 4.AltキーとF11キーを一緒に押してワークシートに戻ってください。 5.保存してください。これでSheet1のA1に今日の日付が入ります。 6.次に開くときはマクロを有効にして開いてください。 -------------------------------------------------とどなかに教えて頂きました。 更に教えてほしいのですが、上記では数種類のワークシートがあった時にどこかのワークシートで保存をしたらすべてのワークシートに反映して日付がかわってしまいます。開いてるワークシートかつ指定のワークシートのみ保存したら日付が変わるようにできないでしょうか?

  • Private Sub Workbook_BeforeSaveについて

    エクセル2000です。 腑に落ちない現象が起きているので質問させてください。 Sheet1にテキストボックス(OLEオブジェクトのTextboxではありません)とボタンが貼ってあり、Visble=Falseで非表示にしています。それを保存する際には表示させたいので、BeforeSaveイベントで Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Sheet1.TextBoxes("テキスト").Visible = True Sheet1.Buttons("ボタン").Visible = True MsgBox "保存されちゃった!" End Sub と書いてみました。 手動で保存する場合には正しく、テクストボックスやボタンは正しく表示されます。もちろんMsgboxも出ます。 ところが、標準モジュールに書いた以下のコード、 Sub 保存() ActiveWorkbook.Save End Sub を走らせてみても、"保存されちゃった!"と、Msgboxは出ますが、肝心のテクストボックスやボタンが表示されません。 試行錯誤の結果、 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Sheet1.Shapes("テキスト").Visible = True Sheet1.Shapes("ボタン").Visible = True MsgBox "保存されちゃった!" End Sub と書くと、標準モジュールから、ActiveWorkbook.Saveでも表示されることがわかりました。 どうしてでしょうか?

  • VBAでWorkbook_BeforeSaveイベントで質問

    Workbook_BeforeSaveイベントである条件に達していればExcelファイルを終了したくないのですがどうすればよいでしょうか? WindowsXP ProSP2、Excel2000 コード例) Option Explicit Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) dim flg as boolean if flg=true then exit sub end if End Sub

  • Excelでシート名と最終更新日を自動表示したい

    Excelを使って (1)セルA1に入れた名目をシート名にし (2)セルH1には、最終更新日を自動で入れたいです。 調べた結果、 シート名を右クリックして「コードの表示」から (1)は Private Sub Worksheet_Change(ByVal Target As Range) Sheets(1).Name = Range("B1") End Sub を入れてうまくいきましたが、 (2)は Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)  If ThisWorkbook.Saved = False Then   Worksheets("Sheet1").Range("H1").Value = Date  End If End Sub を入れてみましたが(←調べましたもの) うまくいきませんでした。 単純に、 Private Sub Worksheet_Change(ByVal Target As Range) Sheets(1).Name = Range("B1") End Sub Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)  If ThisWorkbook.Saved = False Then   Worksheets("Sheet1").Range("H1").Value = Date  End If End Sub とつなげて入れるのではだめなんでしょうか? それとも、(2)の何かが間違っていますか? ご教授願います。

  • 値の受け渡し

    VBAで開くときにマクロを有効にしないとシートがみれないように 【はじめに】【松】【竹】【梅】の4つのシートがあるうち、 保存時に 【はじめに】=表示、 【松】【竹】【梅】=非表示 保存後に 【はじめに】=非表示、 【松】【竹】【梅】=表示 の処理にしましたが、 閉じるで保存ではなくctrl+Sで保存した場合、まだ処理中でも 【竹】【梅】シートで保存した場合【梅】シートが表示されてしまいます。 どのようにしたら使っていたシートに戻れるでしょうか? よろしくお願いします。 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Sheets("はじめに").Visible = True Sheets("はじめに").Select Sheets("松").Visible = False Sheets("竹").Visible = False Sheets("梅").Visible = False End Sub Private Sub Workbook_afterSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Sheets("松").Visible = True Sheets("竹").Visible = True Sheets("梅").Visible = True Sheets("はじめに").Visible = False ★保存をしたシートに戻りたい End Sub Private Sub Workbook_Open() Sheets("松").Visible = True Sheets("竹").Visible = True Sheets("梅").Visible = True Sheets("はじめに").Visible = False End Sub

  • エクセルマクロですべてのファイル保存時コメントだす

    エクセルのアドインでファイル保存するときに”保存しますか?”の ダイアログをすべてのファイルに出したいのですが、 うまくいきません。どなたかお教えください。 PERSONAL_SAVE.XLS というファイルに以下のマクロを作成し C:\Documents and Settings\***\Application Data\Microsoft\Excel\XLSTART VBのClass1に 'Option Explicit Public WithEvents App As Application Private Sub App_WorkbookBeforeSave(ByVal Wb As Workbook, ByVal SaveAsUI As Boolean, Cancel As Boolean) MsgBox ("保存しますか?") End Sub を作成し、 同じくVBのThisworkbookに Dim x As New Class1 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Set x.App = Application End Sub を作成します。 このときは、ほかのファイルに対しても 保存しますか? のメッセージがでます。 しかし、 このファイルをPERSONAL_SAVE.lxa として 保存し、ツール⇒アドイン で追加し、立ち上げても 同様な動きをしません。 どうしてでしょうか? インスタンス?の関係でしょうか?Private を Publicにしても同じでした。

  • Excel2000の保存時のイベントプロシージャ

    エクセル2000で、あるセルが空白なら警告メッセージボックスを出して 保存できないようにする、というプログラムをVBAで作りました。 VBEで一行ずつ走らせるとちゃんとメッセージボックスが 出てくるのですが、実際にブックからD6を空白にしたまま保存しようと したらメッセージボックスが出てこずに保存できてしまいます。 どこかで、設定が必要なのでしょうか? Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) With Worksheets("sheet1") If .Range("D6").Value = "" Then MsgBox "please enter D6 field.", vbCritical, "警告" Cancel = True End If End With End Sub

  • エクセルVBAにて保存するとき

    Private Sub Workbook_BeforeClose(Cancel As Boolean) If MsgBox("エクセルを終了してもよろしいですか?", vbYesNo) = vbNo Then Cancel = True Exit Sub End If Application.DisplayAlerts = False Application.Quit End Sub Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) MsgBox "そのボタンでは保存できません。" & vbCrLf & _ "雛形は残しておきましょう" & vbCrLf & _ "" & vbCrLf & _ "ツールバーの「マクロなし出力」から保存できます。" Cancel = True End Sub という二つのマクロをThisworkbookにいれてあるんですが、 この二つを有効(今は2つ目を'でコメント状態にしてあるので保存可)にすると保存できなくて困っています。 二つを有効にした時はどのようにほぞんすればいいですか?

  • VBAのWorkbook_BeforeSaveイベントについての疑問

    エクセル2000です。 前にも似たような質問をしたのですが理解ができていません。 ThisWorkbookモジュールに以下の記述をし、終了時保存する場合にはSheet2を表に出すようにしました。 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Sheets("Sheet1").Range("A65536").End(xlUp).Offset(1).Value = Time() Sheets("Sheet2").Select MsgBox "保存します。" & ActiveSheet.Name Sheets("Sheet1").Range("B65536").End(xlUp).Offset(1).Value = Time() End Sub これで×を押して手動で終了すればそのとおりに働きます。ActiveSheet.Nameも当然Sheet2になります。 ところが、標準モジュールの下記の終了マクロ Sub 終了() ThisWorkbook.Close End Sub で終了しようとすると、A列セルにTime()は記録され、どういうわけかSheet2がSelectされず、MsgBox "保存します。" のメッセージが出て、B列セルにTime()が記録され、保存されます。 ActiveSheet.NameもSheet2ではありません。 つまり、Sheets("Sheet2").Select の部分だけが完全にスキップされてしまうのです。 どうしてでしょうか?

  • ExcelVBAで改ページから標準へ

    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim X As Worksheet For Each X In Sheets X.Select ActiveWindow.View = xlNormalView ActiveWindow.Zoom = 100 Next Sheets(1).Select End Sub ブックAのマクロで、上記マクロが記述されているブックBを呼び出し 名前を付けて保存をしています。 ブックBの各シートの改ページを直した後に保存ボタンで標準表示に戻そうと思っているのですが その流れだと最初のシートしか標準に戻りません。 2度保存すると全てのシートが標準に戻るのですが・・・。 させたい動作 ・ブックAのマクロで、ブックBを開く ・ブックAの情報をブックBに貼り付ける ・データの量によって改ページが崩れるため、ブックBの改ページを手動で直す ・保存ボタンを押すことにより、ブックBの全てのシートを標準に戻す どうしてこういう事が起こるのか、お分かりの方いらっしゃいましたら どうか教えて下さい。 解りづらい説明で申し訳ございませんが、よろしくお願いします。