我在操作word的时候用到了range.copy() 这样可以方便我操作word内容。
可是当我在程序中使用了range.copy() 后,再paste()时,发现剪切板无内容可用但是,,但是,,在我调试的时候,只要在copy()方法上停留,copy()就可以拿到内容,不停留则仍然拿不到代码如下:
if (dt.Rows.Count > 0 && WordDoc.Tables.Count>0)
            {
                WordDoc.Tables[1].Range.Copy(); 复制步骤
                for (int i = 1; i < dt.Rows.Count; i++)
                {
                    WordDoc.Tables[1].Range.Paste(); 粘贴步骤
                    ro = WordDoc.Tables[1].Rows.Count / 2 + 1;
                    dr = WordDoc.Tables[1].Rows[ro];
                    WordDoc.Tables[1].Split(ref dr); 
                }
} 

解决方案 »

  1.   

    应该是下面这句代码有问题:
    WordDoc.Tables[1].Range.Paste(); 粘贴步骤你执行的拷贝是:WordDoc.Tables[1].Range.Copy();
    你执行的粘贴是:WordDoc.Tables[1].Range.Paste(); 这个逻辑就是选中表格[1],拷贝,粘贴。lz你试试在一个真实的word文档里,选中一个表格,拷贝,粘贴,得到的结果是不是没有任何变化。不知道你能理解我的意思不,呵呵。解决方案就是:
    你要设定一个新的range,不能在原来的range上执行paste,否则还是覆盖以前的内容,看上去就跟没有执行拷贝粘贴一样,实际上是执行了的,呵呵。
      

  2.   

    我也碰到了类似的问题,range.cop取不到数据...但是调试的时候每次都能取到估计是因为copy不是实时的拷贝的,需要在copy后面做判断,等copy完了,再执行其他的操作
      

  3.   

    问题已经解决,最终我发现,在copy之前,word文档必须保存为实际的物理文档,这样才能拷贝到,如果只是在内存中new一个word文档,然后copy 的话就会出现 copy不到的情况。另外为什么在调试中可以不用保存就能copy到,可能是因为调试不是预编译,所以可以copy到,希望对大家有帮助