我正在使用.net 中的 COM 互操作编写 Excel 插件。我有一个弹出对话框的命令,从对话框中我做了一些工作,比如从几张纸的使用范围中收集数据。问题是,如果一个单元格处于编辑模式,我需要进行的一些调用将引发异常。我想要一种预先确定 Excel 处于编辑模式的方法,以便我可以警告用户先完成对单元格的编辑。
有任何想法吗?
我正在使用.net 中的 COM 互操作编写 Excel 插件。我有一个弹出对话框的命令,从对话框中我做了一些工作,比如从几张纸的使用范围中收集数据。问题是,如果一个单元格处于编辑模式,我需要进行的一些调用将引发异常。我想要一种预先确定 Excel 处于编辑模式的方法,以便我可以警告用户先完成对单元格的编辑。
有任何想法吗?
有一个 Application.Ready 属性应该为您提供此信息,但实际上它不能可靠地工作。请参阅此处以获取解决方法。
您可能还想在 .net 代码执行其工作时查看设置 Application.Interactive=false。
试试这个功能:
Function IsInEditMode(ByRef exapp As Excel.Application) As Boolean
If exapp.Interactive = False Then
Return False
Else
Try
exapp.Interactive = False
exapp.Interactive = True
Return False
Catch
Return True
End Try
End If
End Function
你没有提到你使用的是哪种语言。SZL的函数是用VB编写的。由于我使用的是 C#,因此我必须对其进行转换。工作得很好。这是等效的 C# 代码。
bool IsInEditMode(ref Microsoft.Office.Interop.Excel.Application exapp)
{
if (exapp.Interactive == false)
{
return false;
}
else
{
try
{
exapp.Interactive = false;
exapp.Interactive = true;
return false;
}
catch
{
return true;
}
}
}