Hacker News new | ask | show | jobs
by unlimitedbacon 4675 days ago
Years ago, at my first internship, we were assigned to copy fields of information out of hundreds of PDF files and compile them into a single spreadsheet. While my coworker began dutifully trudging away, I started googling and found out about the COM API and the Python library. I spent the rest of my time writing a script to automate the task.

The silly and wonderful thing about the Office API is that it doesn't work silently, but instead performs the operations on screen as if they were being done by a human being. The article explains this. There's something very satisfying about seeing the reaction of your boss as he watches the computer do the work on its own, as if its being operated by a ghost. Now I know what it must have been like to see a player piano a hundred years ago.

4 comments

In VBA there's a command to toggle screen redrawing, isn't it exposed through COM ? very impactful on performance, although I too like to witness high speed visual feedback of automated processing. The social implications are surprising too.
One of the first things i learned about writing VBA macros was to start every one with application.screenupdating = false. It was amazing how much of a performance hit the screen updating was.
I remember at least three "mandatory" statement to wrap any heavy script. Actually I don't remember them, just some fuzzy count.

ps: I don't know how Excel is structured these days but up until 2003 there was zero multicore code, and VBA is not the fastest system around, so any way you can trim the workload is good.

Kind of like the CSI computers that show every fingerprint and mugshot on the screen as the system searches for a match.
I always think of the IO requirements doing that would impose.
There was a related joke the author made about Office API redrawing each and every change. Just to speed things up He would keep moving the window around, and suddenly things would speed up.
Can you still use Office dlls without the Office GUI clicking away in front of you? Is this a limitation of using COM with Office?
You can for Word and Excel. Just set Application.Visible = False.

However, I haven't found a way of turning this off for PowerPoint. On the other hand, one of the weird quirks is that the API draws much faster if you keep the window dragged. I've spent a fair bit of time keeping the PowerPoint window dragged while Python drives COM!