Excel验证错误HRESULT:从Vb.net自动化时为0x800A03EC

时间:2013-07-25 06:06:07

标签: vb.net

通过vb.net自动执行Excel验证0x800A03EC时出现任何错误解决方案。

注意:相同的代码在90%的系统中运行。同样在休息时失败。

以下是我使用过的代码:

For K = 2 To 1000
    objxl.Range("F" & K).FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-2]&RC[-2],C[13]:C[14],2,0),"""")"
    Next
    i = 25
    objxl.Range("D2:D1000").Select()
    If lastrow_main = 2 Then
        lastrow_main = lastrow_main
    Else
        lastrow_main = lastrow_main - 1
    End If
    With objxl.Selection.validation
        .Delete()
        .Add(Type:=Excel.XlDVType.xlValidateList, AlertStyle:=Excel.XlDVAlertStyle.xlValidAlertStop, Operator:= _
        Excel.XlFormatConditionOperator.xlBetween, Formula1:="=$X$2:$X$" & lastrow_main & "")
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With

2 个答案:

答案 0 :(得分:0)

见这里:

Excel.XlFormatConditionOperator.xlBetween, Formula1:="=$X$2:$X$" & lastrow_mail

=$X$2:$X$" & lastrow_mail必须是一个分隔的值字符串。例如1到10:

Formula1:="1,2,3,4,5,6,7,8,9,10"

答案 1 :(得分:0)

这很可能与他的一些用户使用与英语不同的语言运行Excel的事实有关。我遇到了同样的问题并一直在寻找答案。

在使用Validation.Add自定义公式时,Excel似乎不会执行自动公式转换。

我已尝试过http://www.add-in-express.com/creating-addins-blog/2009/02/13/old-format-invalid-type-library/这里的建议,这些建议也在此处发布http://msdn.microsoft.com/en-us/library/office/aa537159(v=office.11).aspx使用Validation.Add时,这些建议都不起作用。

我发现唯一可行的方法是自己手动翻译功能名称。个人维护所有函数名称的翻译并不是我真正想做的事情。我更倾向于使用Excel来翻译它们,或者只是将它们设置为英文,就像“VSTO”应该允许你这样做。

相关问题