oWord = newobject('word.application') && returns an object oDoc = oWord.Documents.Open('WorkingFile.doc') && returns an object loRange = oWord.ActiveDocument.Range(0,0) && returns an object loRange.Find.Execute('OldVal', , , , , , .T., , , 'NewVal', , , , 2) && returns .T. oWord.Visible = .T. && I can visually verify the replace occured... but fails when I run it from a PRG? The only difference is the code above is in a PRG class and all the variables are now properties of the class (e.g., THIS.oWord, THIS.oDocument). loRange is just a variable created in a method.