Excel 互操作自动筛选范围

问题描述 投票:0回答:1

我需要以下过滤器才能在 C# 中工作。

这是 Excel VBA 中的工作宏:

ActiveSheet.Range("$A$1:$XFC$13214").AutoFilter Field:=6, Criteria1:= ">=1/1/2024", Operator:=xlAnd, Criteria2:="<=1/31/2024"

这是我认为的 C# 等价物:

excelRange.AutoFilter(Field: 6, Criteria1: ">=1/1/2024", Operator: Microsoft.Office.Interop.Excel.XlAutoFilterOperator.xlAnd, Criteria2: "<=1/25/2024");

但是我在 C# 中遇到以下运行时错误:

System.Runtime.InteropServices.COMException:“Range 类的_AutoFilter 方法失败”

c# excel excel-interop autofilter
1个回答
0
投票

原来我遗漏了一条重要信息。 Range 正在处理的工作表是通过执行 Worksheet.Copy() 创建的。我做了一些研究,发现以下引用解释了我认为的问题:

*注意

无论您以编程方式复制工作表,还是最终用户 手动复制工作表,新的后面没有代码 工作表和新工作表上的控件不起作用。这是 因为新复制的工作表是一个 Worksheet 对象而不是 工作表宿主项。 Windows 窗体控件和宿主控件只能 添加到主机项。有关详细信息,请参阅程序化 主机项和主机控件的限制。

所以我先对原件进行了过滤,然后复制它,然后关闭原件而不保存它,一切正常!

© www.soinside.com 2019 - 2024. All rights reserved.