regasm.exeを使用して COM DLL を登録しましたが、DLL のクラスを使用する VBA スクリプトを作成しようとしています。DLL はExcelDataReaderLibrary.dll
. C# ソースでは、クラスは次のように記述されています (このライブラリのコードが含まれています)。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Data;
using Excel;
namespace ExcelDataReaderLibrary
{
public class ExcelDataReader
{
public void readSheet(string filePath,string sheetName,string outPath)
{
// code for method here
}
}
}
私のassembly.csファイルには次のものが含まれています。
[assembly: ComVisible(true)]
[assembly: Guid("b1e78f8f-9ab0-46d8-beac-b843656aacdb")]
VBA エディタを開いて [参照] に移動すると、 の参照が表示されExcelDataReaderLibrary
ます。この参照に関連付けられているファイルはExcelDataReaderLibrary.tlbであり、 ExcelDataReaderLibrary.dllではないことに注意してください。ExcelDataReader
このリファレンスを確認した後、次のように VBA でオブジェクトを作成して使用したいと考えています。
Sub x()
Dim xyz As New ExcelDataReaderLibrary.ExcelDataReader
xyz.readSheet "c:\mypath\testfile.xlsx", "Sheet1", "c:\outputPath"
End Sub
オブジェクトは正常に作成されますが、次のreadSheet
エラーが発生します。
Automation error
The system cannot find the file specified.
また、ExcelDataReaderLibrary
名前空間には Intellisense がありますが、ExcelDataReader
オブジェクトには Intellisense がありません。私のクラスは登録されていますが、そのメソッドは登録されていないと思います.Guidで何か違うことをする必要がありますか? VBA コードからメソッドを呼び出すにはどうすればよいですか?