ACC: Conditionally Run AutoExec Macro in Automation Database
ID: Q160951
|
The information in this article applies to:
-
Microsoft Access versions 7.0, 97
Advanced: Requires expert coding, interoperability, and multiuser skills.
SUMMARY
When you use Automation to open a database in another instance of Microsoft
Access, if the database you are opening contains an AutoExec macro, the macro runs. If the macro contains a MsgBox action or opens a modal dialog box, code execution is suspended until you respond by closing the message box or the dialog box.
This article demonstrates a technique to conditionally turn off any or all
AutoExec macro actions when you open a database with Automation.
This article assumes that you are familiar with Visual Basic for
Applications and with creating Microsoft Access applications using the
programming tools provided with Microsoft Access. For more information
about Visual Basic for Applications, please refer to your version of the
"Building Applications with Microsoft Access" manual.
MORE INFORMATION
If there are actions in the AutoExec macro that you do not want to execute
when you open the database with Automation, you can use the UserControl
property in the Condition column of a macro action. The UserControl
property lets you determine whether Microsoft Access is started by a user
or through Automation.
Conditionally Excluding AutoExec Macro Actions
The following example shows you how to use the UserControl property of the
Application object to conditionally run an action in the AutoExec macro:
- Open the sample database Northwind.mdb.
- In the Database window, click the Macros tab and then click New.
- Create a new macro and save it as AutoExec:
NOTE: On the View menu, click Conditions to display the Condition
column in the macro.
Condition Action
---------------------------------------
Application.UserControl = True MsgBox
AutoExec Actions
------------------------------
MsgBox
Message: Opening Northwind
- Close the Northwind database.
- Create a new blank database called Db1.mdb.
- Create a module and type the following procedure:
Function TestAuto()
Static AccObj as Object, x as String
x = _
"C:\Program Files\Microsoft Office\" _
& "Office\Samples\Northwind.mdb"
Set AccObj = GetObject(x)
End Function
- To test this function, type the following line in the Debug window,
and then press ENTER:
?TestAuto()
Note that the Northwind database opens in a separate instance of
Microsoft Access, but does not display the message box.
- Close the Northwind database in the second instance of Microsoft
Access.
- Close the module in Db1.mdb without saving it, and then close the
Db1.mdb database.
- Open the Northwind sample database. Note that the message box
appears.
Suspending Code Execution by Opening a Message Box
The following example demonstrates how code execution stops until you
respond to a message box in a database opened with Automation:
- Repeat steps 1 through 4 in the previous example, but do not add the Condition in the AutoExec macro.
- Create a module in Db1.mdb and type the following procedure:
Function TestAuto2()
Static AccObj as Object, x as String
x = _
"C:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb"
Set AccObj = GetObject(x)
MsgBox "All Done!"
End Function
- To test this function, type the following line in the Debug window,
and then press ENTER.
?TestAuto2()
Note that the Northwind database opens in a separate instance of
Microsoft Access, but the "All Done!" message does not display until
you switch to the Northwind instance of Microsoft Access, click the OK
button in the message box, and then switch back to the Db1.mdb instance
of Microsoft Access.
REFERENCES
For more information about using Microsoft Access as an Automation Server,
please see the following article in the Microsoft Knowledge Base:
Q147816
ACC: Using Microsoft Access as an Automation Server
For more information about the UserControl property, search the Help
Index for "UserControl property," or ask the Microsoft Access 97 Office
Assistant.
Additional query words:
Blinking Frozen Freeze Stop Responding Hung OLE
Keywords : kbinterop kbdta AccCon IntpOlea KbVBA
Version : WINDOWS:7.0,97
Platform : WINDOWS
Issue type : kbhowto