/// personalName()用来调用替换名字的
/// </summary>
/// <param name="oldName">要被替换的名字</param>
/// <param name="newName">要替换的名字</param>
public void replaceName(string oldName,string newName)
{
//Word.Find findObject = word.Selection.Find;
//findObject.ClearFormatting();
//findObject.Text = oldName;
//findObject.Replacement.ClearFormatting();
//findObject.Replacement.Font.Name = "黑体";
//findObject.Replacement.Text = newName;
//object replaceAll = Word.WdReplace.wdReplaceAll;
//findObject.Execute(ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
// ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
// ref replaceAll, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
//object replaceAll = Word.WdReplace.wdReplaceAll;
//object missing = Type.Missing;
首先清除任何现有的格式设置选项,然后设置搜索字符串 strOldText。
//this.word.Selection.Find.ClearFormatting();
//word.Selection.Find.Text = oldName;
//word.Selection.Find.Replacement.ClearFormatting();
//word.Selection.Find.Replacement.Text = newName;
//word.Selection.Find.Replacement.Font.Name = "黑体";
//word.Selection.Find.Execute(
// ref missing, ref missing, ref missing, ref missing, ref missing,
// ref missing, ref missing, ref missing, ref missing, ref missing,
// ref replaceAll, ref missing, ref missing, ref missing, ref missing);
object myFind = word.Selection.Find;
object findText = oldName;
object replaceText = newName;
object replaceAll = Word.WdReplace.wdReplaceAll;
try
{
object[] Parameters;
Parameters = new object[15];
Parameters[0] = findText;
Parameters[1] = oMissing;
Parameters[2] = oMissing;
Parameters[3] = oMissing;
Parameters[4] = oMissing;
Parameters[5] = oMissing;
Parameters[6] = oMissing;
Parameters[7] = oMissing;
Parameters[8] = oMissing;
Parameters[9] = replaceText;
Parameters[10] = replaceAll;
Parameters[11] = oMissing;
Parameters[12] = oMissing;
Parameters[13] = oMissing;
Parameters[14] = oMissing;
//word.Selection.Find.Replacement.Font.Name = "黑体";
myFind.GetType().InvokeMember("Execute", BindingFlags.InvokeMethod, null, myFind, Parameters);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
//object replaceAll = Word.WdReplace.wdReplaceAll;
//Word.Document document = word.ActiveDocument;
//Word.Range rng = document.Content;
//rng.Find.ClearFormatting();
//rng.Find.Text = oldName;
//rng.Find.Replacement.ClearFormatting();
//rng.Find.Replacement.Text = newName;
//rng.Find.Replacement.Font.Name = "黑体";
//rng.Find.Execute(
// ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
// ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
// ref replaceAll, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
// object missing = Type.Missing;
// object replaceAll = Microsoft.Office.Interop.Word.WdReplace.wdReplaceAll;
// Microsoft.Office.Interop.Word.Find findObject = myWord.ActiveDocument.Content.Find;
// findObject.ClearFormatting();
// findObject.Text = strOldText;
// Microsoft.Office.Interop.Word.Replacement replacementObject = findObject.Replacement;
// replacementObject.ClearFormatting();
// findObject.Replacement.Text = strNewText;
// findObject.Replacement.Font.Name = "黑体";
// findObject.Execute(ref missing, ref missing, ref missing,
// ref missing, ref missing, ref missing, ref missing,
// ref missing, ref missing, ref missing, ref replaceAll,
// ref missing, ref missing, ref missing, ref missing);
}
以上四种方法,但是对我初学者看来都差不多,但是被注释的三种方法,在有些电脑上运行会提示错误:
************** 异常文本 **************
System.Runtime.InteropServices.SEHException: 外部组件发生异常。
在 Microsoft.Office.Interop.Word.Find.set_Text(String prop)
在 wordTest.Form2.replaceName(String oldName, String newName)
***************************************
从网上搜集好多资料说把参数写开,就是上面没被注释的方法,却是再没有报“外部组件发生异常”的事情,
但是想把字体设置成“黑体”不太会弄,总感觉//word.Selection.Find.Replacement.Font.Name = "黑体";这句话和上面其他语句很不协调,而且在我的计算机运行正常,但是在有的计算机直接崩掉,连错误提示都没有,请教高人指点。