At a guess, there's some kind of oddity with the type information. If you use a dynamic dispatch for the body, it seems to work in the -1 example. Changing the last 2 lines of the Ononclick event code to body=win32com.client.dynamic.Dispatch(doc.body) print 'body text' , body.createTextRange().text gives the expected result. Roger