kokodayo.net Wiki

終了時常に保存して終了

Excel2010で機能しました。

Excel VBAで終了時常に保存して次回Sheet1を表示させるコード

2006/04/03

コード :

Option Explicit
Dim WB As Workbook

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Copyright kokodayo.net Takakou_PCJ
On Error GoTo Err

 Dim oBook As Workbook
 Dim sBookName1 As String
 Dim bFound1 As Boolean

Application.DisplayAlerts = False
Application.ScreenUpdating = False

 bFound1 = False
 sBookName1 = ThisWorkbook.Name

 Set WB = Workbooks(sBookName1)

 With WB
  For Each oBook In Workbooks
   If oBook.Name = sBookName1 Then
    bFound1 = True
   End If
  Next

  If bFound1 = True Then
   Sheet1.Activate
'  次回開くときに終了したシートからはじめるには
'   Sheet1.Activateを削除
   .Save
  End If

 End With

 Set oBook = Nothing
 sBookName1 = ""

'正常終了
 Exit Sub

'エラー処理
 Err:
 Set oBook = Nothing
 sBookName1 = ""

End Sub

説明 :

コードを含んだワークシートを雛型として作っておいて、
コピーして使えば、終了時確認しなくても
次回Sheet1を表示するように保存してくれます。
但し、間違ってもそのまま保存になりますので終了前に目視確認。
仮に1日10回Excelを開く人は1年で、なんと実に
3650回以上のクリックを省力化できます。(笑)
ワークシート自体の閉じる速度も速くなるようです。
50人の会社ですとチリも積もって、年間無駄な18万2500回のクリック分
幸せになれるかもしれません。(え?)
但し、なにかしらのマクロ開始のアラート抑制が必要です。

使用方法 :

Visual Basic Editorを開いてThisWorkbookのコードとして
Option Explicit以下End Subまでをコピー貼り付けします。

ご注意 :

Excel2000より後のバージョンではワークブックを複数開くときはSheet1を表示する部分は使えませんのでその場合は Open時に個々にSheet1を開くようにする必要があります。
Sheet1.Activateの部分は削除して下さい。

使用環境 :

Windows2000/XP Excel2000

kokodayo.net_VBA