用mcc命令生成Excel插件

除了使用库编译器和MATLAB函数,还可以在MATLAB命令行用mcc命令生成Excel插件。这种方法难一点,大家了解一下即可。前面两种方法本质上还是使用的mcc命令,包装了一下,使用更方便。

语法格式如下所示:

code.matlab
mcc -W 'mpsxl:addin_name,className,version'
     options mfilename1 mfilename2...mfilenameN

下面介绍语法的各个部分。

-W:让编译器创建一个打包器函数。该选项带一个字符串参数,指定组件的某些特性,如表4-1中所示。

表4-1 –W字符串参数及其描述

-W 字符串参数 描 述
excel: 该关键字告诉编译器要创建的组件的类型,后面跟一冒号,指定创建一个Excel插件
addin_name 指定组件名称及其名字空间,名字空间是一个句号间隔的列表,如 componentname.groupname.component
className 指定类的名称
version 指定版本号,格式为:主版本号.次版本号
code.matlab
mfilename1 [mfilename2…mfilenameN]

指定M文件或即将作为要创建的类的方法的M文件。

下面的语句使用mcc命令用D盘下的M文件mymagic.m生成Excel插件和COM组件。

code.matlab
>> mcc -W 'mpsxl:magic,magicclass' 'd:\mymagic.m'
警告: mcc failed to create Excel Add-in "magic.xla". (Details: SaveAs.)
You can manually create the Add-in by importing the .bas file into Excel.
Excel primary interop assembly Microsoft.Office.Interop.Excel.dll is found in C:\WINDOWS\assembly\GAC_MSIL\Microsoft.Office.Interop.Excel\15.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Excel.dll.
成功生成了注册表脚本“C:\magic.reg”
操作成功完成。

结果显示,用mcc命令在C盘下生成了COM组件和VBA模块,但是没有生成Excel插件,它建议用VBA代码手工创建插件。注意,生成的插件位于magic.reg相同的目录下。