Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Script to open Access database, run macro, and persist Access instance

I would like to have a script to:

  1. Open an Access .accdb file
  2. Run a macro within the database
  3. Leave this open

I can very easily do the first two with the following VB script:

dim accessApp
set accessApp = createObject("Access.Application")
accessApp.visible = true
accessApp.OpenCurrentDataBase("C:\path.accdb")
accessApp.Run "myLinker"

But it immediately closes the Access database when the VBS execution finishes. I would like the instance to remain open independent of the script.

I am not forced to use VBScript for this but it definitely seems the easiest to actually invoke the macro to run.

like image 848
enderland Avatar asked Dec 05 '13 15:12

enderland


People also ask

What name can you give a macro to cause it to run immediately after the database starts?

Create an AutoExec macro If you have already created a macro that contains the actions that you want to occur when the database starts, just rename the macro to AutoExec, and it will run the next time that you open the database.


2 Answers

If you want to leave the application open after the script completes you need to set the UserControl property to true.

dim accessApp
set accessApp = createObject("Access.Application")
accessApp.visible = true

accessApp.UserControl = true

accessApp.OpenCurrentDataBase("C:\path.accdb")
accessApp.Run "myLinker"

The Visible property is technically unnecessary when the UserControl property is true. It will automatically be set.

More information here: http://msdn.microsoft.com/en-us/library/office/ff836033.aspx

like image 113
Bryan Weaver Avatar answered Oct 13 '22 20:10

Bryan Weaver


You could also just use a .bat or .cmd file and put this because MSACCESS has a command line switch for running a macro and unless that macro closes the database it will remain open for user control.

START "" /MAX "PATH\TO\MSACCESS.EXE" "C:\path.accdb" /x myLinker

like image 30
engineersmnky Avatar answered Oct 13 '22 21:10

engineersmnky