我有一个单词2007 .doc
文件,其中包含按部分分隔的多个子文档。
有没有办法从文档中删除所有分节符?
我试图查找并替换它们,但收到错误。
private void RemoveAllSectionBreaks(Word.Document doc)
{
Word.Find find = doc.Range(ref oMissing, ref oMissing).Find;
find.ClearFormatting();
//find.Text = "^b"; // This line throws an error
find.Text =((char)12).ToString(); // Same error when attempting it this way
find.Replacement.ClearFormatting();
find.Replacement.Text = "";
find.Execute(ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, Word.WdReplace.wdReplaceAll, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
}
find.Text
行会产生错误 -
SEHException未被用户代码
处理外部组件抛出异常。
我没有得到任何有关错误可能的详细信息。代码在word 2003中运行正常,但我需要在Word 2007中使用它。
我是否采用了2007年的正确方法?
答案 0 :(得分:5)
我最后做了一个不同的方法。由于单词查找功能导致错误,我决定编码搜索/删除。以下代码将删除它遇到的所有分节符。
private void RemoveAllSectionBreaks(Word.Document doc)
{
Word.Sections sections = doc.Sections;
foreach (Word.Section section in sections)
{
section.Range.Select();
Word.Selection selection = doc.Application.Selection;
object unit = Word.WdUnits.wdCharacter;
object count = 1;
object extend = Word.WdMovementType.wdExtend;
selection.MoveRight(ref unit, ref count, ref oMissing);
selection.MoveLeft(ref unit, ref count, ref extend);
selection.Delete(ref unit, ref count);
}
}
答案 1 :(得分:1)
迟到的回归,但我使用的另一个解决方案是你也可以使用vsto查找和替换,用段落的“^ m”替换段落,段落的“^ p”或空字符串。
using Word = Microsoft.Office.Interop.Word;
object missing = Missing.Value;
Word.Document tmpDoc = wordApp.Documents.Open(fileToOpen);
object findText = "^m";
object replaceText = "^p^p";
tmpDoc.Range().Find.Execute(ref findText,
true, true, true, ref missing, ref missing, ref missing,
ref missing, ref missing, ref replaceText, Word.WdReplace.wdReplaceAll,
ref missing, ref missing, ref missing, ref missing);