在word开发中,跨文件数据拷贝粘贴出现ComException(“组织策略阻止了该操作“)异常的处理方式
来源:互联网 发布:南开大学网络教学平台 编辑:程序博客网 时间:2024/06/05 06:13
一、问题描述
在word开发中有时要求把一个文档的内容拷贝到另一个文档,如下所述。然而,在执行该项工作过程中,曾遇到一个意向不到的情况,查询了好多网站,虽然在bing网站搜寻过程中也有人遇到此问题,但一直没有搜寻到有人给出解决措施。
情况是这样的,在执行Range.Copy()或Range.CopyAsPicture()方法时,出现System.Runtime.InteropServices.ComException异常,并提示:组织策略阻止了该操作。 造成程序运行中断。显然,在调用word模型对象过程中,com调用出现问题。虽然该异常不是每次都出现,但绝大多数时候出现,导致程序根本无法使用。
程序如下所示:
/// <summary>
/// 改方法传入一个文档范围(Range)和新创建文档的名称。就是新创建一个文档copyFileName,将传入的文档范围中的文档拷贝到新文档中,并关闭新文档。
/// </summary>
/// <param name="document">被拷贝文档的范围----Range对象</param>
/// <param name="copyFileName"> 新创建的文档名称(含路径) </param>
public static void SaveACopy(Word.Document document,string copyFileName) //改方法传入两个参数,第一个参数
{
object visible = (object)true; //新创建的文档可见
templateDocument = document.Application.Documents.Add(ref G_Missing, ref G_Missing, ref G_Missing,ref visible); //创建新文档,让其可见
Word.Range original_Range = document.Range(); //获取原有文档全部内容范围Range
original_Range.Select(); //选择
original_Range.CopyAsPicture(); //拷贝到clipboard
Word.Range copy_Range = templateDocument.Range(); //获取新创建文档的范围Range
object collapseDirection = Word.WdCollapseDirection.wdCollapseEnd;
copy_Range.Collapse(ref collapseDirection); //折叠,获取文档尾部位置尾部
copy_Range.Select(); //选中插入位置
copy_Range.Paste(); //粘贴 。。。。。就是这里出现问题,出现"System.Runtime.InteropServices.ComException:组织策略阻止了该操作,组织策略阻止了该操作。” 测试过程中,该异常大多数时候出现,少数时候是不出现该异常的,用的word2016。
object p = (object)copyFileName;
templateDocument.SaveAs(ref p); //保存新创建文档
templateDocument.Close(); //关闭新创建文档
}
二、可用的解决措施
经过反复试验,虽然调整了word信任中心的一些参数,但都无效。后来偶尔发现将修改了新创建文档是否可见的参数后,不在出现这个异常。即将object visible = (object)true 修改为object visible = (object)false。如果需要查看该文档,可以先拷贝保存后再重新打开。虽然该方法有些笨拙,但在一定程度上可以满足使用要求。
/// <summary>
/// 改方法传入一个文档范围(Range)和新创建文档的名称。就是新创建一个文档copyFileName,将传入的文档范围中的文档拷贝到新文档中,并关闭新文档。
/// </summary>
/// <param name="document">被拷贝文档的范围----Range对象</param>
/// <param name="copyFileName"> 新创建的文档名称(含路径) </param>
public static void SaveACopy(Word.Document document,string copyFileName) //改方法传入两个参数,第一个参数
{
object visible = (object)false; //就是把true 改为false,新创建的文档不可见
templateDocument = document.Application.Documents.Add(ref G_Missing, ref G_Missing, ref G_Missing,ref visible); //创建新文档,让其可见
Word.Range original_Range = document.Range(); //获取原有文档全部内容范围Range
original_Range.Select(); //选择
original_Range.CopyAsPicture(); //拷贝到clipboard
Word.Range copy_Range = templateDocument.Range(); //获取新创建文档的范围Range
object collapseDirection = Word.WdCollapseDirection.wdCollapseEnd;
copy_Range.Collapse(ref collapseDirection); //折叠,获取文档尾部位置尾部
copy_Range.Select(); //选中插入位置
copy_Range.Paste(); //把visible改为false后,不在出现原来的ComException异常
object p = (object)copyFileName;
templateDocument.SaveAs(ref p); //保存新创建文档
templateDocument.Close(); //关闭新创建文档
}
- 在word开发中,跨文件数据拷贝粘贴出现ComException(“组织策略阻止了该操作“)异常的处理方式
- “System.Runtime.InteropServices.COMException”类型的未经处理的异常出现在 HTFES.BLL.dll 中。 其他信息: 检索 COM 类工厂中 CLSID
- onenote无法打开链接出现错误您的组织策略阻止我们为您完成此操作
- 您试图打开以前版本的Microsoft Office创建的文件。注册表策略设置已阻止此文件在该版本中打开的解决办法
- 您试图打开以前版本的Microsoft Office创建的文件,注册表策略设置已阻止此文件在该版本中打开
- 开发技巧,为了避免拖拽文件出现无法到达工程中,应该是件文件直接拷贝的工程中,不要在xcode里面操作
- 程序开发中异常的处理方式
- outlook 您的组织策略阻止我们为您完成此操作 解决办法
- 解决outlook 中邮件中,点击链接提示(您的组织策略阻止我们为您完成此操作)解决方案
- Word中粘贴出现M2(M的平方)现象
- word复制粘贴的时候出现中括号
- vi怎么实现在两个文件之间的拷贝&粘贴
- vi怎么实现在两个文件之间的拷贝&粘贴
- 关于“word在复制粘贴后出现m2 ,要重复一次才能正确粘贴的问题”
- 在指定方法中抛出异常,在调用该方法的地方处理异常
- C#读写Word文档异常处理解析System.Runtime.InteropServices.COMException
- 在java中CreateProcess出现的异常的处理(备忘)
- 在java中CreateProcess出现的异常的处理(备忘)
- calcHist函数
- Kotlin的配置(一)
- 【nginx】Nginx的安装和配置
- Google Guava学习(10)-Guava字符串工具CharMatcher
- 【Java并发学习】之线程的创建
- 在word开发中,跨文件数据拷贝粘贴出现ComException(“组织策略阻止了该操作“)异常的处理方式
- python内置数据类型:数字
- Codeforces 876F High Cry【逆向思维】
- python使用的零散知识
- vim编辑器(4):环境设置
- python 表示windows路径
- 项目管理的繁杂
- Ubuntu与windows时间不对的问题的解决方案
- 【nginx】相关配置