C#生成word查找替换中的问题

        /// <summary>
        /// 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 = "黑体";这句话和上面其他语句很不协调,而且在我的计算机运行正常,但是在有的计算机直接崩掉,连错误提示都没有,请教高人指点。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值