特定のブックを開くたびに、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以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。