【发布时间】:2018-04-17 00:29:41
【问题描述】:
我想在几个函数之间传递一个 Excel 工作簿/工作表作为参考,以便对其进行不同的操作。我一直在寻找几个小时,无法找到如何做到这一点。以这种方式在 Excel 工作表上工作的多个功能不是常见的做法吗?下面的代码不起作用..如果我按值传递也不起作用。
'System.Runtime.InteropServices.COMException:'来自 HRESULT 的异常:0x800401A8' '
pass_ref(ref xlWorkSheet1); //call this
void pass_ref(ref Excel.Worksheet sheet) {
MessageBox.Show("Pass Ref:" + sheet.Name); //can't produce sheet name
}
【问题讨论】:
-
首先,我认为将参数设置为 ref 不会导致此异常。其次,如果您不将
sheet重新分配给不同的工作表,则无需将其设为参考。它已经是一个引用类型,所以默认情况下它是通过引用传递的。这更有可能是由您使用 Excel 的方式引起的,例如根据stackoverflow.com/questions/10285549/… -
我在没有 'ref' 的情况下运行它。仍然没有工作。有些东西我没有到达这里。我是否必须声明一个完整的其他 excel 应用程序才能使其工作?
-
您将工作表传递给不同的函数这一事实不会导致错误,因此实际上无关紧要。创建minimal reproducible example 可能很棘手,但添加一些有关您使用 Excel 应用程序或工作表所做的详细信息会有所帮助
-
我在 excel 中创建了两列字符串。我可以从调用 pass_ref(xlWorkSheet) 的函数中做到这一点。我无法通过该工作表进行进一步修改。