重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

エクセルで「上書き保存」のボタンを押すと、任意のセルに今日の日付が入るようにしたいと思います。(「上書き保存」ボタンを押すと、更新日が表示されるようにしたいです)

マクロを作成すればできると思いますが、マクロ初心者でよく分かりません。
「上書き保存」ボタンを押さずに終了した場合は前の日付のままにしたいです。

具体的にどのように作成すればよいかご存知の方教えてください。

A 回答 (4件)

こんばんは。



「個人用マクロブック」に、クラスモジュールと標準モジュールを挿入して、それぞれを貼り付けて、Excelを再起動してください。

ボタンは、ファイル(F)の中の「上書き保存」とツールバーの「上書き保存」アイコンと両方に設定しました。「名前を付けて保存」のほうは、そのままです。ボタンを押すと、ダイアログメッセージが出てきて、その日付でよいのか、通常の保存と同じようにして、変更されたファイル名が出てきます。日付の書式は、ご自身で直してください。

なお、同系のマクロ(Classを使用したもの)の場合は、なるべく、一本に統合してください。片方のインスタンスがつぶれる可能性があります。

---------------------------------------------------------
標準モジュール

'Option Explicit
Public CtrlId As Long
Private ClassBtn(1) As Class1
Sub Auto_Open()
 Call SettingButton
End Sub
Sub SettingButton()
Dim CB As CommandBarButton
 With Application
 'ファイルメニュー側
 Set ClassBtn(0) = New Class1
 Set ClassBtn(0).myNewBtn = .CommandBars("Worksheet Menu Bar") _
    .Controls("ファイル(&F)").Controls("上書き保存(&S)")
    
 'ツールボタン側
 Set ClassBtn(1) = New Class1
 Set ClassBtn(1).myNewBtn = .CommandBars("Standard").FindControl(, 3)
    
 End With
End Sub

---------------------------------------------------------
Class モジュール(Class1)

Private WithEvents NewBtn As Office.CommandBarButton
Private WithEvents NewApp As Application

Public Property Set myNewBtn(ByVal myBtn As CommandBarButton)
 Set NewBtn = myBtn
End Property

Private Sub NewBtn_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
Dim myDate As String
 If CtrlId = 0 Then
 myDate = Format$(Date, "yymmdd")
 Application.Dialogs(xlDialogSaveAs).Show (myDate)
 CancelDefault = True
 CtrlId = Ctrl.Index
 Else
 CtrlId = 0
 End If
End Sub
    • good
    • 0

#2です。



今日の日付、でしたね。
現在の日時と勘違いしてました。
失礼しました。
    • good
    • 0

参考HPです。



http://www.geocities.jp/vbaxl/

ブックの
Workbook_BeforeSave
を使用してみてはいかがでしょう?

現在日時は、

Now

で取得できます。

Worksheets("Sheet1").Range("A1").Value = Now

でシート1のA1セルに現在時刻を代入します。

このコードを先ほどの
>Workbook_BeforeSave
に組み込みます。

なお、
Now
で取得する日時のフォーマットは、
Format関数
で変換できます。
    • good
    • 0

「上書き保存」と「名前をつけて保存」の区別はできませんが、保存する前に任意のセルに日付を入力します。

シート名、セルのアドレスは変更して下さい

マクロはALT+F11でVBE画面を開き、該当するBookの「ThisWorkBook右クリック」→「コードの表示」で表示される画面に貼り付けて下さい。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Const sh As String = "Sheet1" 'シート名
Const rng As String = "A1" 'セルアドレス
Worksheets(sh).Range(rng).Value = Date
End Sub
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!