I have to perform a large number of replacements in some documents, and the thing is, I would like to be able to automate that task. Some of the documents contain common strings, and this would be pretty useful if it could be automated. From what I read so far, COM could be one way of doing this, but I don't know if text replacement is supported. I'd like to be able to perform this task in python? Is it possible? Could you post a code snippet showing how to access the document's text?
Thanks!
See if this gives you a start on word automation using python.
Once you open a document, you could do the following.
After the following code, you can Close the document & open another.
The above code replaces the text "test" with "test2" and does a "replace all".
You can turn other options true/false depending on what you need.
The simple way to learn this is to create a macro with actions you want to take, see the generated code & use it in your own example (with/without modified parameters).
EDIT: After looking at some code by Matthew, you could do the following
And then translate the above VB code to Python.
Note: The following VB code is shorthand way of assigning property without using the long syntax.
(VB)
Python
Pardon my python knowledge. But, I hope you get the idea to move forward.
Remember to do a Save & Close on Document, after you are done with the find/replace operation.
In the end, you could call
MSWord.Quit
(to release Word object from memory).If this mailing list post is right, accessing the document's text is a simple as:
Also see How to: Search for and Replace Text in Documents. The examples use VB and C#, but the basics should apply to Python too.
You can also achieve this using VBScript. Just type the code into a file named
script.vbs
, then open a command prompt (Start -> Run -> Cmd), then switch to the folder where the script is and type:I like the answers so far;
here's a tested example (slightly modified from here)
that replaces all occurrences of a string in a Word document:
Checkout this link: http://python.net/crew/pirx/spam7/
The links on the left side point to the documentation.
You can generalize this using the object model, which is found here:
http://msdn.microsoft.com/en-us/library/kw65a0we(VS.80).aspx