私はこれを探していましたが、どこにも答えが見つからなかったので、ここの誰かが助けてくれることを願っています.
WordApplcation.CompareDocuments を使用して 2 つのドキュメントを比較し、リビジョンとしてマークされた変更を含む結果ドキュメントを取得する C# で WinForms アプリケーションを実行しています。
これはうまく機能し、リビジョンがテキストボックス内に物を隠していることを除けば(私はまだ気にしません)、私が望むものを正確に得ることができます。
次のステップは、修正された単語の数を数えることです。具体的には、wdRevisionDelete と wdRevisonInsert です。
唯一の問題は最終的なものです。リビジョンは時々空であるか、膨大な量のデータ (500 ワード以上) を含んでいます。
リビジョンのMSDNページを読みました。そのドキュメントを数えます。リビジョンはすべてのリビジョンを表示するのではなく、メインストーリーのリビジョンのみを表示し、範囲を使用する必要がありますが、それは役に立ちませんでした。
ここに私の現在のコードがあります:
using Word = Microsoft.Office.Interop.Word;
と
foreach (Word.Section s in final.Sections)
{
foreach (Word.Revision r in s.Range.Revisions)
{
counter += r.Range.Words.Count;
if (r.Type == Word.WdRevisionType.wdRevisionDelete)
delcnt += r.Range.Words.Count;
if (r.Type == Word.WdRevisionType.wdRevisionInsert)
inscnt += r.Range.Words.Count;
}
}
final は、WordApplication.CompareDocuments によって作成された Word ドキュメントです。
だから、私が言ったように、MSDN によると、document.Revision の代わりに range.Revision を使用し、セクションごとに進みます。
半ダースのリビジョンを持つ 1 つのドキュメントだけが何も表示されず、他のドキュメントでは 100 のリビジョンが表示されます。
私の質問は、リビジョンを使用して追加/削除された単語をカウントする方法です。
CompareDocuments が Word 2007 で作成したドキュメントを開きました。リビジョンは正しくマークされており、Word 内で承認または拒否できます。
私が見落としている可能性のあるものについてのアイデアはありますか?
編集:私は何か奇妙なことに気付きました.txtファイルとして保存しようとすると、0の変更を報告している元のdocファイルをCompareDocumentsが(正しく)いくつかマークしていますが、すべてのページがtxtファイルに保存されているわけではないことに気付きました.リビジョンのあるすべての領域。
Word 2007 と LibreOffice 3.3 の両方を使用して txt ファイルに変換しようとしましたが、どちらも同じ結果になりました (多くのテキストが欠落しています)。
なんか関係あるかも。
このファイルの何が問題なのだろうか。
何か案は?