>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.