in reply to Re: Capturing excel macro errors
in thread Capturing excel macro errors

The purpose of the reporter script is to automate a group of reports that my team uses daily to monitor the status of all the machines we support. We're trying to get away from any user intervention at all.

I am gradually building in ways to detect that a report is hung (the typical end result of a macro error), but it would be so much better if I could just get the error passed back to OLE instead of having to figure out that it has occurred by polling the appl, checking runtime, etc...

Replies are listed 'Best First'.
Re^3: Capturing excel macro errors
by roboticus (Chancellor) on Dec 02, 2007 at 22:54 UTC
    Perhaps you might have success with Spreadsheet::WriteExcel? I've had very good luck with that. (Originally had to use it because we can't install Office on our servers.)

    It might not be able to do everything you can do via OLE automation, but it doesn't tend to have error messages with dialog boxes, either.

    ...roboticus

      I appreciate the suggestion, but I'm afraid it pulls me away from the goal I'm trying to achieve (which I should have stated more clearly).

      The application only exists to take an excel spreadsheet generated by a user (who need not know anything about perl), refresh the data (which perl need not know anything about), and distribute the resulting report. It actually prints it to a postscript file, converts that to a pdf, and distributes the pdf in most cases. I didn't include this in the original post because I was afraid it would be a distraction to my main question.

      Given the silence of the monks, I'm guessing that excel doesn't provide a method of returning errors back through OLE to the calling program.

      Again, i appreciate your suggestions. Unfortunately they're just not quite what I'm looking for.
        jrsimmon:

        Okay, then. Three final useless suggestions before I go to bed. ;^)

        1) How about have a (generous) timeout on the operation and assume it failed if you reach it? (Course, then you'd have to kill the job, and "graceful shutdown" is no longer on the menu.)

        2) Assuming the problem is a dialog box hanging you up, maybe a perl program that would "notice" new windows on the server and nudge your script if it happens to belong to Excel?

        3) Go all out and hook into the debugger hooks (the ones that ask you if you want to debug the application yadda yadda), make a perl module that handles it, post it on CPAN, and reap the glory? ;^D

        (I was originally going to give you a different three suggestions. The third one was "Profit", but I couldn't figure out the second one.....)

        ...roboticus