2012-04-12 2 views
1

In PowerPoint (mindestens 2007, aber wahrscheinlich andere), weigert es sich zu buchstabieren "einige" Text in einigen Formen buchstabieren.Die Wurzel des PowerPoint-SpellChecker-Bugs gefunden - Wie kann ich mit VBA eine Datei reparieren?

Ich dachte, es war die Art der Form, so änderte sie, das hat es nicht behoben. Also habe ich ein paar Experimente gemacht, um etwas, was ich "infizierten" Text nannte, in ein paar Kästchen zu verschieben und zu sehen, dass es irgendwie mit dem Text verbunden war.

eine sehr einfache Datei Taking mit bekannten infizierten und nicht infizierten Abschnitten ich die PPTX auf eine .zip umgewandelt und geöffnet. \ Ppt \ gleitet \ slide1.xml

In hier Text, der Scheck wird nicht buchstabieren ist inclosed mit:

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

Text, das in Ordnung geschrieben ist, oder hatte "ignorieren" gedrückt in inclosed mit:

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

Und missspelled Text wurde, dass mit gefunden:

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

ich gefunden und gelöscht alle noProof = „1“ in der Datei, kehrte er in die countainer und öffnete die Präsentation. und alles Rechtschreibprüfung wie ich es erwartet hätte, wurden alle Fehler in allen Boxen gefunden, ohne die Datei zu beschädigen.

Nach dem Speichern habe ich die Datei silde1.xml erneut geöffnet und dirty="0" smtClean="0" oder dirty="0" smtClean="0" err="1" an den richtigen Stellen gefunden.

Jetzt ist die Frage, wie verwende ich dieses neu gefundene Wissen, um eine Datei zu reparieren, ohne alle Folien # .xml Dateien manuell abstrahieren, öffne sie in einem Texteditor und mit "Ersetzen", um sie zu beheben?

Dieser Prozess der Extraktion könnte automatisiert werden, aber wenn es möglich ist, von VBA in PowerPoint zu tun, wäre es einfacher.

Danke, Andrew

+0

Wenn die XML besagt, dass der Text nicht Korrektur gelesen werden sollte. Ich würde sagen, es ist kein Fehler, dass es nicht Korrektur gelesen und definitiv nicht die Wurzel ist. Wenn es ein Fehler ist, wäre der Grund, warum der Text so geschrieben ist, als ob er kein Beweis sein sollte. –

+0

Nun, wenn es kein Fehler ist, bl ** t es schlechtes Design! :) Das Problem ist, dass es keine Kontrolle in PowerPoint gibt, um die "Funktion" ein- oder auszuschalten. Die Software übermäßig schwierig zu verwenden. Wenn Sie einen Weg in PowerPoint kennen, um dieses Attribut umzuschalten, wäre das großartig. – Stripy42

Antwort

1

Schön finden. Nicht sicher, ob es eine Möglichkeit gibt, dies über die VBA-API zu tun. Aber Sie sollten dies mit der OpenXML-API tun können. Dies muss möglicherweise als ein .net-Projekt codiert werden.

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

+0

Danke, Nun, das wird mir die Entschuldigung geben, die ich lernen musste .Net! – Stripy42

1

Ich weiß, dass Sie für eine bestimmte Antwort gebeten, in Bezug auf Powerpoint nicht buchstabiert in „einige“ Bereichen zu überprüfen.

Ich möchte Ihnen ein Programm vorschlagen, das ich Spell Check Anywhere genannt habe. Es fügt Rechtschreibprüfung zu allen Windows-Programmen hinzu, einschließlich PowerPoint. So können Sie in jedem Windows-Programm, wo auch immer Sie tippen, eine Rechtschreibprüfung durchführen.

Die Rechtschreibprüfung ist sehr hohe Qualität, viel bessere Wortvorschläge, als sogar Word gibt.

Es kommt auch mit Geschwindigkeitstypisierung.

Also, während Sie nach einer Lösung für PowerPoint suchen, wird dieses Programm Ihnen eine Lösung für Ihre gesamte Rechtschreibprüfung bieten.

Danke, Tomer

+0

Danke, das wird eine geniale Stop-Lücke für meinen PC zu Hause sein. Aber im Büro sind die Computer gesperrt. Ich muss Dateien für alle Benutzer "reparieren" können. – Stripy42

1

Ich habe endlich einen Weg, um diese mit Hilfe von Skripten zu beheben (zumindest einen Teil des Prozesses) powershell verwenden.

  1. Benennen Sie die .pptx Datei zu .zip
  2. Navigieren Sie zu \ppt\slides
  3. extrahieren Sie die slide*.xml Dateien
  4. Run Windows Powershell
  5. Navigieren Sie zu dem Ordner, der die extrahierten XML-Dateien
  6. Fügen Sie den folgenden Code enthält:

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

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

  7. Setzen Sie die xml-Dateien zurück in die Zip-Datei

  8. Benennen Sie die .zip Datei zurück auf .pptx,
  9. Ergebnis: eine Powerpoint-Datei, die Kontrollen richtig eingegeben wurden.
Verwandte Themen