隐藏模块中的VSTO编译错误:使用Excel.Range get_Range时的剪贴板

时间:2014-06-17 17:32:15

标签: c# .net excel vsto

我一直在编写一个加载项来处理位于目录中的Excel文件中的数据。我的程序已经在许多场景下成功运行,所以我知道我的代码通常是可靠的。到目前为止,我一直在阅读Excel文件的第一个“工作表”。

我一直致力于通过Worksheets对象执行foreach循环来“抓取”整个工作簿的功能。这个过程在大多数情况下都可以正常工作,但有时当我更换工作表时,我会弹出消息:Compile Error in Hidden Module: Clipboard。我不会在任何时候给剪贴板打电话或写任何东西。我已经重新启动机器以清除内存并仍然收到消息。

在断点检查中,我在调用Excel.Range oRng = thisExcel.xlWorksheet.get_Range("A1").SpecialCells(Microsoft.Office.Interop.Excel.XlCellType.xlCellTypeLastCell);后收到消息 - 此时它会抛出Complile Error消息两次(在同一行),然后继续。它不会导致程序失败 - 如果我一直点击'Okay'它将继续到最后并给我输出。

在我的代码中,oRng是函数中的局部变量,与设置新ActiveSheet的过程不同,因此在调用get_Range之前它是null。

当我每个工作簿只阅读1张时,这种情况不会发生,并且它仍会运行到最后 - 只是抛出此消息,直到它被解除后才会继续。我正在使用VSTO 2010。

使用get_Range时是否有问题?我可以根据要求分享更多代码,如果这有助于增加光线。

更新

尝试了我清除剪贴板的建议。当我尝试Clipboard.Clear()时,我会得到相同的结果。

1 个答案:

答案 0 :(得分:0)

事实证明,Compile Error in Hidden Module: Clipboard是一些消息,提供给我提供的一些工作簿中的某些特定宏。它在Excel 2010中运行了各种问题。但是在针对Excel 2013进行测试时,没有问题。