Já s tímhle nikdy moc nedělal, ale přijde mi zbytečné to dělat wordem. Většina aplikací si vystačí se slovníkem slov, které porovnává se zadaným textem. Tipoval bych, že to zavření wordu ti dělá WordApp.Quit, asi bys to neměl volat, pokud už byl spuštěný.
Pak tam máš ještě pár pochybných kusů kódu:
try WordDoc := nil; except end;
try WordDoc.Free; except end;
požírat výjimky není zrovna košér, bývá dobré to alespoň dát do logu. Nastavit něco na nil a pak zavolat Free je blbost, protože Free už nic neudělá a v paměti ti zůstane viset nějaký objekt, na který se už nedostaneš (pokud nemáš referenci uloženou ještě někde). Takže buď volej Free a nastav na nil nebo můžeš volat FreeAndNil.