C#Excel加载项工作表错误0x800A03EC – 未请求的单元格移动

好吧,我有一个大脑为你磨损; 我正在尝试开发一个相对简单的excel插件,它应该从工作簿中的工作表A中读取数据,创build一个新的或更新的工作表B,以在工作表A中按下一个button来包含所述数据的简化版本。 以下是我正在处理的一些示例代码:

Application.SendKeys("{ENTER}"); // Exit edit mode Excel.Workbook wb = this.Application.ActiveWorkbook; Excel.Worksheet sheetA = null; Excel.Worksheet sheetB = null; foreach (Excel.Worksheet sheet in wb.Worksheets) { // Assume origin sheet we want to move from is same name as book name if (sheet.Name == wb.Name) sheetA = sheet; // Sheet to move to will be called review. Clean if it exists. else if (sheet.Name == "Review") { sheetB = sheet; sheetB.Cells.ClearContents(); } } // If origin sheet cannot be found, assume it's the first sheet if (sheetA == null) sheetA = (Excel.Worksheet)wb.Worksheets[1]; // Add the review sheet after the origin sheet if it doesn't exist if (sheetB == null) { sheetB = wb.Worksheets.Add(After: sheetA); sheetB.Name = "Review"; } // Simply copy across the value of the first cell sheetB.Range["A1"].Value2 = sheetA.Range["A1"].Value2; 

现在这个代码的结果似乎根本不同,取决于是否有任何东西在“编辑模式”(单元格正在编辑)或不。 如果不是的话,一切都和你所期望的一样,在正确的位置创build新的工作表并填充单元格。

如果正在编辑单元格,编辑的单元格将被移到工作簿中的另一个工作表中。 如果没有其他工作表移动到带有HRESULT: 0x800A03ECCOMException HRESULT: 0x800A03EC引发HRESULT: 0x800A03EC (错误未知)。

这个错误显示了很多,它真的令人沮丧,基本上告诉你“如果我知道该死”,所以任何想法将不胜感激。 最常见的事情似乎是“工作表不存在”这将是这种情况下,但我不知道为什么要移动编辑单元格?

find解决scheme 模拟返回键击(我的例子的第一行)确实退出编辑模式,但应用程序需要延迟处理它。 我的实现工作如下:

 Application.SendKeys("{ENTER}"); // Exit edit mode Timer timer = new Timer(100); // 100ms delay timer.AutoReset = false; // Stop the timer looping and re-executing timer.Elapsed += new ElapsedEventHandler((Sender, ent) => { // Code you want to execute outside of edit mode }); timer.Start(); // Start her up! 

希望能帮助一些失落的灵魂!