ブックを開いたときにプロシージャを実行する(Microsoft Excel)
特定のブックを開くたびに、Excelにプロシージャを自動的に実行させることができます。たとえば、ブックを開いたときに、前日のデータを別のファイルに保存するなど、ユーザーにタスクを実行するかどうかを尋ねるプロシージャを実行したい場合があります。
ブックを開いたときにプロシージャを自動的に実行するには、プロシージャにAuto_Open()という名前を付けるだけです。したがって、次のプロシージャは、それを含むブックが開かれるたびに自動的に実行されます。
Sub Auto_Open() Dim strMsg As String Dim intBoxType As Integer Dim strTitle As String Dim intUpdate As Integer Dim strDefault As String Dim strOldFile As String Dim intStatusState As Integer strMsg = "Do you want to save yesterday's transactions?" intBoxType = vbYesNo + vbQuestion strTitle = "Automatic Backup Routine" intUpdate = MsgBox(Msg, BoxType, Title) If intUpdate = vbYes Then strMsg = "Which filename would you like use?" strDefault = "OLD.DAT" strOldFile = InputBox(strMsg, strTitle, strDefault) intStatusState = Application.DisplayStatusBar Application.DisplayStatusBar = True Application.StatusBar = "Updating past months..." UpdateYesterday Application.StatusBar = False Application.DisplayStatusBar = intStatusState End If End Sub
(このプロシージャは例であることに注意してください。実際の更新を行うUpdateYesterdayという関数を呼び出すため、システムでは正しく実行されません。)
このマクロは、添付されているブックを開くたびに自動的に実行されます。最初の行を次のように変更するだけで、コードを変更してThisWorkbookオブジェクト内に配置することもできます。
Private Sub Workbook_Open()
多くの人が、このタイプのマクロの「古い方法」としてAuto_Openを使用し、「新しい方法」としてWorkbook_Openを使用することを検討しています。ある意味でそれは真実です。 Workbook_Openメソッドは、Auto_Openよりもこのタイプのマクロに対するオブジェクト指向のアプローチです。ただし、実際には、この2つの間にほとんど違いはありません。
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(2289)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。