ComException HRESULT:尝试向范围添加验证时抛出0x800A03EC

时间:2016-07-15 22:03:13

标签: c# .net excel

尝试使用Range.Validation.Add()方法时,我一直收到一个非常不友好的错误:

************** Exception Text **************
System.Runtime.InteropServices.COMException (0x800A03EC): Exception from HRESULT: 0x800A03EC
   at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData)
   at Microsoft.Office.Interop.Excel.Validation.Add(XlDVType Type, Object AlertStyle, Object Operator, Object Formula1, Object Formula2)
   at TravelPlannerTools.Sheet8.OperaCodesDropDown() in C:\Users\Michael Utz\Documents\Visual Studio 2015\Projects\TravelPlannerTools\TravelPlannerTools\Sheet8.cs:line 39
   at TravelPlannerTools.Sheet8.Sheet8_Startup(Object sender, EventArgs e) in C:\Users\Michael Utz\Documents\Visual Studio 2015\Projects\TravelPlannerTools\TravelPlannerTools\Sheet8.cs:line 27
   at Microsoft.Office.Tools.Excel.WorksheetImpl.OnStartup()
   at Microsoft.Office.Tools.Excel.WorksheetImpl.WorksheetExtensionImpl.Microsoft.Office.Tools.EntryPoint.OnStartup()
   at Microsoft.Office.Tools.Excel.WorksheetBase.OnStartup()
   at TravelPlannerTools.Sheet8.FinishInitialization() in C:\Users\Michael Utz\Documents\Visual Studio 2015\Projects\TravelPlannerTools\TravelPlannerTools\Sheet8.Designer.cs:line 50
   at Microsoft.Office.Tools.Excel.WorksheetBase.Microsoft.Office.Tools.EntryPoint.FinishInitialization()
   at Microsoft.VisualStudio.Tools.Office.Runtime.DomainCreator.ExecuteCustomization.ExecutePhase(ExecutionPhases executionPhases)
   at Microsoft.VisualStudio.Tools.Office.Runtime.DomainCreator.ExecuteCustomization.Microsoft.VisualStudio.Tools.Office.Runtime.Interop.IExecuteCustomization2.ExecuteEntryPoints()


************** Loaded Assemblies **************

我正在使用正确版本的Excel并尝试执行一项非常简单的任务。

        var list = new List<string>();
        list.Add("Lann");
        list.Add("Latl");
        list.Add("LBBB");
        var flatList = string.Join(",", list.ToArray());
        var cell = Globals.Sheet8.Cells.Range["A2"];
        cell.Validation.Delete();
        cell.Validation.Add(
            Excel.XlDVType.xlValidateList,
            Excel.XlDVAlertStyle.xlValidAlertStop,
            Excel.XlFormatConditionOperator.xlBetween,
            flatList,
            System.Type.Missing
            );
        cell.Validation.IgnoreBlank = true;
        cell.Validation.InCellDropdown = true;

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我试图写入的单元格位于受保护的工作表上。在操作之前和之后使用Worksheet.Protect()Worksheet.Unprotect()方法切换保护可以清除错误!