Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过Excel互操作进行一系列复制/粘贴后,OpenClipboard失败(HRESULT:0x800401D0)_C#_.net_Excel_Vb.net_Vsto - Fatal编程技术网

C# 通过Excel互操作进行一系列复制/粘贴后,OpenClipboard失败(HRESULT:0x800401D0)

C# 通过Excel互操作进行一系列复制/粘贴后,OpenClipboard失败(HRESULT:0x800401D0),c#,.net,excel,vb.net,vsto,C#,.net,Excel,Vb.net,Vsto,我需要添加一个Excel VS,用于将形状从一个源工作表复制/粘贴到目标工作表(两者都在同一工作簿中)。 目标工作表包含数据条目(每个条目一行)。例程对每一行执行以下操作: 获取数据 根据数据计算X-Y位置 从源工作表复制形状(形状名称取决于数据) 在目标工作表中粘贴形状 移动到计算的X-Y位置 该例程在我的两台测试计算机上运行良好,最多300行(没有尝试更多)。 客户机的所有计算机都有问题,例如“大”数据表。代码在100到130之间的某一行中断,但每次在同一文件上运行同一例程时,代码都会中断到

我需要添加一个Excel VS,用于将形状从一个源工作表复制/粘贴到目标工作表(两者都在同一工作簿中)。 目标工作表包含数据条目(每个条目一行)。例程对每一行执行以下操作:

  • 获取数据
  • 根据数据计算X-Y位置
  • 从源工作表复制形状(形状名称取决于数据)
  • 在目标工作表中粘贴形状
  • 移动到计算的X-Y位置
  • 该例程在我的两台测试计算机上运行良好,最多300行(没有尝试更多)。 客户机的所有计算机都有问题,例如“大”数据表。代码在100到130之间的某一行中断,但每次在同一文件上运行同一例程时,代码都会中断到不同的行(这有点随机)

    OpenClipboard失败(来自HRESULT的异常:0x800401D0(CLIPBRD\u E\u CANT\u OPEN))

    位于System.RuntimeType.ForwardCallToInvokeMember(字符串memberName、BindingFlags标志、对象目标、Int32[]aWrapperTypes、MessageData和msgData)

    在Microsoft.Office.Interop.Excel.Shape.Cut()中

    在ExcelAddIn.MyCode

    我相信例程在第4步中断,并怀疑剪贴板堆栈可能会被淹没?
    我读到这个HResult可能指的是竞争条件,但在我的例子中,我们正在尝试剪切,因此形状还没有在剪贴板中。

    工作簿中是否有任何事件。因为它是随机的,我怀疑您正在使用所选形状进行复制,并且由于某些原因,该形状未处于活动状态。看起来您正在将形状复制到剪贴板,而剪贴板是空的。事件可能会删除对对象的选择。源形状是通过其名称访问的,我从不使用“已选择”。步骤3:TempShape=SourceSheet.Shapes(Name).replicate;TempShape.CutIs源文件无效。您是否尝试过TempShape=Sheet(“Name”)。Shapes(Name)。重复;也许可以尝试使用VBA脚本来查看是否发生相同的随机错误。我曾经非常擅长InteropExcel,但厌倦了处理所有错误,决定回到VBA。除此之外,interop的速度非常慢。是的,SourceSheet是有效的:形状是重复的(我可以在SourceSheet中看到它),TempShape也是有效的(我总是在
    中测试String s=TempShape.name
    以确保引用没有丢失)。我现在正在研究这个问题:调试VSTO确实很痛苦。。它还包装了如此多的.Net功能,这使得在VSTO环境下有10%的框架文档无效。。