in reply to Win32::OLE -- How do you call a function within the application?

beartiger:

It's not really a perl question, as much as it is an OLE question. Generally you first have to understand the object model, then navigate the various containers until you get the item you're looking for. Then you can invoke the methods on that object.

You're wanting to run a function you wrote in Access, so you'll need to find out where the user code is. A quick peek at the access object model documentation lists Application --> CodeData --> AllFunctions --> AccessObject. So I'd suspect that you drill down and get the AccessObject holding Foo(), and invoke the run method on it (assuming it has one). But even if you can find a way to access various objects, the object model may not give you the ability to do certain things.

I don't use Access, nor am I much interested in spelunking through the docs, so I can't be much more help than that.

...roboticus

When your only tool is a hammer, all problems look like your thumb.

  • Comment on Re: Win32::OLE -- How do you call a function within the application?

Replies are listed 'Best First'.
Re^2: Win32::OLE -- How do you call a function within the application?
by beartiger (Initiate) on Jun 10, 2011 at 23:23 UTC
    Thanks for the response, but I wonder if someone can provide an example of doing something like this. My problem is not so much knowing where the user code is as knowing how to pass in the values for the params.

    I know where the function is. The function is called TransposeDetails(). It's in a module called basExport. It takes two parameters, a string and an int.
        The answer, as it turns out, is to use the Application.Run method, like:

        $oAccess->Run("myfunction","arg")

        Best regards,
        John