In PowerPoint (2007 at least, but probably others), it refuses to spell check “some” text in some shapes.
I thought it was the type of shape, so changed them, this didn’t fix it. So I did some experiments moving what I called “infected” text into a few boxes and saw that it was somehow attached to the text.
Taking a very simple file with known infected and uninfected sections I converted the .pptx to a .zip and opened .\ppt\slides\slide1.xml
In here text which won’t spell check is inclosed with:
<a:rPr noProof="1" ...
Text which is spelt ok, or had “ignore” pressed in inclosed with:
<a:rPr dirty="0" smtClean="0" ...
And missspelled text, that was found with:
<a:rPr dirty="0" smtClean="0" err="1" ...
I found and deleted all the noProof=”1″s in the file, returned it to the countainer and opened the presentation. and everything spell check as I would expect it should, all errors in all boxes were found, without damaging the file.
After saving it, I reopened the silde1.xml and found dirty="0" smtClean="0" or dirty="0" smtClean="0" err="1" in the correct places.
Now the question is, how do I use this new found knowledge to fix a file, without manualy exstracting all the slide#.xml files, opening them in a text editor and using “Replace” to fix them?
That process of exstraction could be automated, but if it is possible to do from VBA within PowerPoint it would be easier.
Thanks,
Andrew
I have finally found a way to fix this using scripting (at least part of the process) using
powershell..pptxfile to.zip\ppt\slidesslide*.xmlfilesWindows PowershellPaste the following code:
$configFiles=get-childitem . *.xml -recforeach ($file in $configFiles) { (Get-Content $file.PSPath) | Foreach-Object {$_ -replace ' noProof="1"', ''} | Set-Content $file.PSPath }Put the
xmlfiles back into the zip file.zipfile back to.pptx,Powerpointfile that spell checks correctly.