2
像工作表,工作簿,范围等Excel对象可以从VBA传递时,.NET作为参数时,微软的互操作程序集引用到.NET:无法通过Excel对象从VBA参数使用NetOffice互操作
.NET类:
using Excel = Microsoft.Office.Interop.Excel;
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.AutoDual)]
public class MyExcelLib
{
public MyExcelLib() {} // default constructor
public void InsertTable(Excel.Workbook wbook, string TableName, ...)
{
...
}
}
..compiled与注册为COM Interop选项,在Visual Studio中,或与Regasm工具(见Newman's article一个很好的概述)。
VBA脚本(Excel宏)调用.NET方法InsertTable():
Dim xLib As New MyExcelLib
Call xLib.InsertTable(ThisWorkbook, "Price", ..)
这工作; Workbook对象可以作为参数从VBA传递给.NET。但是同样的模式不具有NetOffice组件工作:
using Excel = NetOffice.ExcelApi;
using NetOffice.ExcelApi.GlobalHelperModules;
using NetOffice.ExcelApi.Enums;
据我了解,在嵌入互操作类型,这些组件的属性不能设置为true,因为这会导致编译错误。显然,使用NetOffice无法将excel对象作为参数传递。这是真的,还是有办法使用NetOffice做到这一点?