• ベストアンサー

上書き保存ボタンで日付自動入力するマクロ

エクセルで「上書き保存」のボタンを押すと、任意のセルに今日の日付が入るようにしたいと思います。(「上書き保存」ボタンを押すと、更新日が表示されるようにしたいです) マクロを作成すればできると思いますが、マクロ初心者でよく分かりません。 「上書き保存」ボタンを押さずに終了した場合は前の日付のままにしたいです。 具体的にどのように作成すればよいかご存知の方教えてください。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.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

その他の回答 (3)

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.3

#2です。 今日の日付、でしたね。 現在の日時と勘違いしてました。 失礼しました。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.2

参考HPです。 http://www.geocities.jp/vbaxl/ ブックの Workbook_BeforeSave を使用してみてはいかがでしょう? 現在日時は、 Now で取得できます。 Worksheets("Sheet1").Range("A1").Value = Now でシート1のA1セルに現在時刻を代入します。 このコードを先ほどの >Workbook_BeforeSave に組み込みます。 なお、 Now で取得する日時のフォーマットは、 Format関数 で変換できます。

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

「上書き保存」と「名前をつけて保存」の区別はできませんが、保存する前に任意のセルに日付を入力します。シート名、セルのアドレスは変更して下さい マクロは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

関連するQ&A