Worksheet、Workbook、Range などの Excel オブジェクトは、Microsoft の相互運用アセンブリが参照されている場合、VBA から .net にパラメーターとして渡すことができます。
.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, ...)
{
...
}
}
.. Visual Studio のRegister for COM Interopオプション、または Regasm ユーティリティでコンパイルされます (概要については、 Newman の記事を参照してください)。
.net メソッドInsertTable()を呼び出す VBA スクリプト (Excel マクロ) :
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;
私の知る限り、コンパイル エラーが発生するため、これらのアセンブリのEmbed Interop Typesプロパティを true に設定することはできません。どうやら、NetOffice を使用して Excel オブジェクトをパラメータとして渡すことはできません。これは本当ですか、または NetOffice でこれを行う方法はありますか?