Running a macro in Access

I have to run a macro in Access (don't ask me why).  How can I do this through one of the MFC database classes?
LVL 8
mnashadkaAsked:
Who is Participating?
 
AndyAinscowFreelance programmer / ConsultantCommented:
This was in another question.  It looks like it is what you require.  (What error do you get with the #import ?)

COleVariant vOpt(DISP_E_PARAMNOTFOUND, VT_ERROR);
     
     MSAccess::_Application oApp;
    oApp.CreateDispatch("Access.Application");
     MSAccess::DoCmd oDoCmd = oApp.GetDoCmd();
     oApp.OpenCurrentDatabase("C:\\Documents and Settings\\Administrator\\Desktop\\ASSISTENT BASE\\AS_DB1.mdb", FALSE,"macro1");
     
     oApp.SetVisible(true);

     
     MSAccess::_CurrentProject oProj = oApp.GetCurrentProject();
    MSAccess::AllObjects oObjs = oProj.GetAllModules();

    CString sModName, sProcName, sItem;
   
          //Module must be open:
         
     oDoCmd.RunMacro(COleVariant("macro1"),vOpt,COleVariant(sModName));
    oDoCmd.Maximize();
0
 
AlexFMCommented:
Oops, it's not Access. Sorry.
0
Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

 
AndyAinscowFreelance programmer / ConsultantCommented:
No.  You can only get at the tables and queries with the MFC Database classes.
You may be able to do it with automation - but I haven't tried this (also do you really mean a macro or a piece of code in a module).
0
 
mnashadkaAuthor Commented:
It could either be a macro or a sub.  I figured that macros would be easier.  I tried to #import "path\msacc9.olb" to get to the automation, but it gave me some errors about a Property class not being defined.  I was also #importing the MSO9.dll and the VBE6EXT.olb (I think those were the extensions, and I tried it with both no_namespace and using namespace after the import, but I couldn't get past that error.
0
 
Nass89Commented:
Hi,
You could use DDE(Dynamic Data Exchange) to run a macro in Access. I did it using National Instruments Labview, but I didn't it using MFC. I think it is possible to run macro with MFC too.

Good Luck!
0
 
mnashadkaAuthor Commented:
Nass89, could you explain how you did it?
0
 
Nass89Commented:
Hi,
As I wrote, I did it with National Instruments LABVIEW. If you can use DDE, the procedure is the same.
First open a DDE connection to your databse file. Second run a command using Macro name, and finally close the connection.
Can you use DDE ? MSDN hase many article about it.

Good Luck!
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.