c#中如何正确替换word书签的内容?        string strWordTemplate = Server.MapPath("司法.doc"); // 模板文件
      Word.Application WordApp = new Word.ApplicationClass();  //  定义一个Word.Application 对象
Word.Document doc = OpenDoc(strWordTemplate,ref WordApp,1); //定义一个Word.Document 对象
        foreach(Word.Book BM in doc.Books) 
         {
 switch(BM.Name)
             {

                 case "PrintCopySEGN":
        BM.Select();
                 BM.Range.Text="test";//在这里报错,原因是 赋值前 BM.Range.Text = " formText " 执行这条语句之后提示: "无法删除范围。"         break;
              }
         ......
         }请高手帮忙解答

解决方案 »

  1.   

    private void button2_Click(object sender, System.EventArgs e)
    {
    //数据库是否存在
    if( this.getData() )
    {
    System.Data.DataRow dr;
    System.Data.DataView dv= this.dsScore.Tables[0].DefaultView;
    for( int i=0; i< this.dsStu.Tables[0].Rows.Count; i++ )
    {
    //建立新文档
    object missing = System.Reflection.Missing.Value;
    if( App == null )
    App = new Word.ApplicationClass();
    App.Visible = true;

    object oTemplate = this.模板.Text.Trim();
    doc = App.Documents.Add(ref oTemplate, ref missing,ref missing, ref missing);
    doc.Activate(); Word.Books bms = doc.Books;

    //替换开学日期等内容
    foreach( String s in bmsComm) 
    {
    this.replace( bms, s, this.getControlText( s ) );
    }

    dr = dsStu.Tables[0].Rows[i]; //替换学生纪律情况等
    foreach( System.Data.DataColumn dc in dsStu.Tables[0].Columns )
    {
    this.replace( bms, dc.Caption, dr[ dc.Caption].ToString() );
    } //替换成绩
    int n = 1;
    dv.RowFilter = "学号=" + dr["学号"].ToString();
    foreach(DataRowView row in dv)
    {
    this.replace( bms,"课程名称"+n.ToString(),row["课程名称"].ToString());
    this.replace( bms,"成绩"+n.ToString(),row["成绩"].ToString());
    n++;
    }

    //使用默认打印机打印文档
    //C#不提供默认参数真是麻烦
    doc.PrintOut( ref missing,ref missing,ref missing,ref missing,ref missing,ref missing,
    ref missing,ref missing,ref missing,ref missing,ref missing,ref missing,ref missing,
    ref missing,ref missing,ref missing,ref missing,ref missing); //关闭文档而不保存
    object SaveChanges  = Word.WdSaveOptions.wdDoNotSaveChanges;
    missing = System.Reflection.Missing.Value;
    doc.Close( ref SaveChanges, ref missing, ref missing);
    }
    }
    }MARK
      

  2.   

    替换语句换成这个试试
    ojbect name ="PrintCopySEGN";
    rng = word.ActiveDocument.Books. get_Item(ref name).Range;
    rng.Text = "Hello";
    range = rng;
    word.ActiveDocument.Books.Add("bookMk1", ref range);