个人资料

跳过导航链接首页 > 博客列表 > 博客正文

使用Excel使用VBA调用调用进程外COM组件

分类:

接上文:使用C#开发进程外COM组件

准备用Excel配合CNTK试试训练机器学习模型.因为CNTK桌面版只支持X64,所以就必须开发一个进程外COM组件给Excel调用,相比进程内方式复杂了很多,进程内COM组件开发参考:

https://bettersolutions.com/csharp/excel-interop/vba-calling-csharp-automation-add-in.htm

进程外COM组件注册: 注册COM组件的同时还要安装SCM服务

set regasmPath=%windir%\Microsoft.NET\Framework64\v4.0.30319\regasm.exe
set InstallutilPath=%windir%\Microsoft.NET\Framework64\v4.0.30319\Installutil.exe
cd /d F:\MyStorage_SongShiZhao\DesktopBridge\MathNetExcelApp\MachineLearningCNTK\bin\x64\Debug\
%regasmPath% MachineLearningCNTK.exe
:: uninstall previous version
%InstallutilPath% /u MachineLearningCNTK.exe
:: install new version
%InstallutilPath% MachineLearningCNTK.exe
pause

64位进程外COM组件已开发好,因为是进程外的COM组件,所以32位x86版本的excel可以跨进程调用不受进程限制.

在Excel中使用VBA调用com组件,使用后期绑定的方式

Function helloworld() 'matA As Range, matB As Range, Optional name = "cntk.trainer"
    Dim addin As Variant
    Set addin = CreateObject("MachineLearningCNTK.SimpleObject")
    helloworld = addin.helloworld()
End Function
测试成功通过,撒花~


songshizhao
最初发表2020/9/7 1:04:44 最近更新2020/9/7 1:06:14 1770
为此篇作品打分
10
   评论