C# 如何查找单元格的命名范围-VSTO引发异常

C# 如何查找单元格的命名范围-VSTO引发异常,c#,excel,vsto,C#,Excel,Vsto,要获取单元格的命名范围,请输入我的代码。如果单击的单元格位于第一张图纸上,则工作正常。但当我从其他工作表中选择一个单元格时,它只是从HRESULT:0x800A03EC错误中抛出异常 在stack上看到了类似的问题,但Din无法从这些帖子中得出结论: 这是我的密码: Microsoft.Office.Interop.Excel.Workbook _workbook = ThisAddIn.Application.ActiveWorkbook; M

要获取单元格的命名范围,请输入我的代码。如果单击的单元格位于第一张图纸上,则工作正常。但当我从其他工作表中选择一个单元格时,它只是从HRESULT:0x800A03EC错误中抛出异常

在stack上看到了类似的问题,但Din无法从这些帖子中得出结论: 这是我的密码:

            Microsoft.Office.Interop.Excel.Workbook _workbook = ThisAddIn.Application.ActiveWorkbook;

            Microsoft.Office.Interop.Excel.Range Target = (Microsoft.Office.Interop.Excel.Range)Globals.ThisAddIn.Application.ActiveCell;
            foreach (Microsoft.Office.Interop.Excel.Name name in _workbook.Names)
            {
                Microsoft.Office.Interop.Excel.Range intersectRange = _workbook.Application.Intersect(Target, name.RefersToRange);
                if (intersectRange != null)
                {
                    rangeName = name.Name;
                    break;
                }
            }

在我看来,它类似于
Globals。ThisAddIn.Excel
是一个
应用程序
对象。它可能与
Globals.ThisAddIn.Application
不同。根据使用两个
应用程序之间的对象可以触发异常


尝试更改代码以使用一个或另一个
应用程序
实例,而不是同时使用这两个实例。

在我看来,它类似于
Globals。ThisAddIn.Excel
是一个
应用程序
对象。它可能与
Globals.ThisAddIn.Application
不同。根据使用两个
应用程序之间的对象可以触发异常


尝试将代码更改为使用一个或另一个
应用程序
实例,而不是同时使用这两个实例。

如果范围在不同的工作表上,则无法使用Intersect而不引发错误。添加检查以查看每个范围的
父属性是否引用同一工作表,在尝试
Intersect()

之前,如果范围位于不同的工作表上,则无法使用Intersect而不引发错误。在尝试使用
Intersect()

之前,请添加一项检查,查看每个范围的
父属性是否引用同一个工作表。请尝试一种更简单的方法获取名称

如果不是(ActiveCell.ListObject为Nothing),则 MsgBox ActiveCell.ListObject.Name
如果结束

请尝试更简单的方法获取名称

如果不是(ActiveCell.ListObject为Nothing),则 MsgBox ActiveCell.ListObject.Name
End If

在哪一行抛出异常?我很好奇。
互操作首选项是什么?我不记得在我的经验中曾经需要(或看到)过它。那是一个自定义对象。我已经更新了代码来忽略这一点。异常是在哪一行抛出的?我很好奇。
互操作首选项是什么?我不记得在我的经验中曾经需要(或看到)过它。那是一个自定义对象。我已经更新了代码以忽略这一点。啊,我看到你在问题中删除了对
Globals.ThisAddIn.Excel
的引用。你测试过了吗?啊,我看到你在问题中删除了对
Globals.ThisAddIn.Excel
的引用。你测试过了吗?