MSWord automation:Get file contents after it was saved

Posted by BlackTigerX on Stack Overflow See other posts from Stack Overflow or by BlackTigerX
Published on 2010-03-17T05:32:27Z Indexed on 2010/03/17 6:11 UTC
Read the original article Hit count: 578

Filed under:
|
|

I have an application that uses MSWord automation to edit some documents, after they save and close word I need to grab the modified file and put it back on the repository, there is only one scenario where I can't get it to work and that is when the user makes changes to the file, selects to close word and selects yes to save the file

there are 2 events that I'm using: DocumentBeforeSave Quit

on the Quit event I'm trying to load the .docx file from disk but on this particular scenario I get an IOException because the file is still in use, somehow I need to wait until after the Quit event has been processed, which is when Word is actually closed and the file is no longer being used

right now I have it working using this

      word.Visible = true; 
        while (!wordDone) { //gets changed to true on the Quit event
            System.Threading.Thread.Sleep(100);
        }
        bool error = false;
        do {
            try { //need to load the contents of the modified file
                ls.Content = System.IO.File.ReadAllBytes(provider.GetFileName());
                error = false;
            }
            catch (System.IO.IOException) {
                error = true;
                System.Threading.Thread.Sleep(200);
            }
        } while (error);

while this works it is very ugly, I need a way to fire an event after the Quit event has been handled, or block the current thread while word is still running, or get an event after the document has been saved, the bottom line is I need a clean way to load the file after it has been saved and word is closed. DocumentAfterSave would be awesome, but doesn't seem to exist.

I Also tried unhooking the Quit handler and calling word.Quit on the Quit handler, that made no difference

© Stack Overflow or respective owner

Related posts about msword

Related posts about automation