找到PowerPoint SpellChecker错误的根源 - 现在,我如何使用VBA修复文件?

时间:2012-04-12 09:03:13

标签: .net vb.net vba powerpoint-vba

在PowerPoint(至少2007年,但可能是其他人)中,它拒绝拼写检查某些形状的“某些”文本。

我认为这是形状的类型,所以改变了它们,这没有解决它。所以我做了一些实验,将我称之为“被感染”的文本移动到几个方框中,看到它以某种方式附加到文本上。

使用已知感染和未感染部分的非常简单的文件,我将.pptx转换为.zip并打开。\ ppt \ slides \ slide1.xml

在这里,不会拼写检查的文字包括:

<a:rPr noProof="1" ...

拼写正确的文字,或已按下“忽略”的文字:

<a:rPr dirty="0" smtClean="0" ...

和错误的文字,发现于:

<a:rPr dirty="0" smtClean="0" err="1" ...

我找到并删除了文件中的所有noProof =“1”,将其返回给了计数器并打开了演示文稿。并且所有拼写检查都按照我的预期进行检查,找到所有框中的所有错误,而不会损坏文件。

保存后,我重新打开了silde1.xml,并在正确的位置找到了dirty="0" smtClean="0"dirty="0" smtClean="0" err="1"

现在的问题是,我如何使用这个新发现的知识来修复文件,而不是手动抽取所有幻灯片#.xml文件,在文本编辑器中打开它们并使用“替换”来修复它们?

这种抽象过程可以自动化,但是如果可以从PowerPoint中的VBA进行操作则会更容易。

谢谢, 安德鲁

3 个答案:

答案 0 :(得分:1)

好的发现。 不确定是否有办法通过VBA API执行此操作。但您应该能够使用OpenXML API执行此操作。这可能需要编码为.net项目。

http://www.microsoft.com/download/en/details.aspx?id=5124

答案 1 :(得分:1)

我知道您要求提供关于PowerPoint的具体答案,而不是在“某些”区域进行拼写检查。

我想建议你使用一个名为Spell Check Anywhere的程序。它为所有Windows程序添加了拼写检查,包括PowerPoint。因此,您可以在任何键入的地方拼写任何Windows程序。

拼写检查是非常高质量,更好的单词建议,甚至比Word给出的。

它还带有速度输入。

因此,当您正在寻找PowerPoint的解决方案时,此程序将为您提供解决整个拼写检查需求的解决方案。

谢谢, Tomer的

答案 2 :(得分:1)

我终于找到了一种使用powershell使用脚本(至少部分过程)来修复此问题的方法。

  1. .pptx文件重命名为.zip
  2. 导航至\ppt\slides
  3. 提取slide*.xml个文件
  4. 运行Windows Powershell
  5. 导航包含解压缩的xml文件的文件夹
  6. 粘贴以下代码:

    $configFiles=get-childitem . *.xml -rec

    foreach ($file in $configFiles) { (Get-Content $file.PSPath) | Foreach-Object {$_ -replace ' noProof="1"', ''} | Set-Content $file.PSPath }

  7. xml文件放回zip文件

  8. .zip文件重命名为.pptx
  9. 结果:拼写检查正确的Powerpoint文件。