The MWUtil
класс содержит набор статических служебных методов, используемых в обработке массивов и инициализации приложений. Этот класс реализован внутренне как синглтон (только один глобальный образец этого класса на образец Microsoft® Excel®). Наиболее эффективно объявить одну переменную этого типа в глобальных возможностях в каждом модуле, который ее использует. Методы MWUtil
являются:
Прототипы функций используют Visual Basic® синтаксис.
Инициализирует библиотеку с текущим образцом Microsoft Excel.
Аргумент | Напечатать | Описание |
---|---|---|
|
|
Допустимая ссылка на текущее приложение Excel |
Ничего.
Эта функция должна вызываться один раз для каждого сеанса Excel, в котором используются COM- компонентов, созданные MATLAB® Compiler™. Ошибка генерируется, если вызов метода выполнен в класс представителя любого MATLAB Compiler SDK™ COM- компонента, и библиотека не была инициализирована.
Эта выборка Visual Basic инициализирует MWComUtil
библиотека с текущим образцом Excel. Глобальная переменная типа Object
именованные MCLUtil
содержит образец MWUtil
Класс и другая глобальная переменная типа Boolean
именованные bModuleInitialized
сохраняет состояние процесса инициализации. Частная стандартная подпрограмма InitModule()
создает образец MWComUtil
класс и вызывает MWInitApplication
метод с аргументом Application
. После успешного выполнения этой функции все последующие вызовы выходят без воссоздания объекта.
Dim MCLUtil As Object Dim bModuleInitialized As Boolean Private Sub InitModule() If Not bModuleInitialized Then On Error GoTo Handle_Error If MCLUtil Is Nothing Then Set MCLUtil = CreateObject("MWComUtil.MWUtil") End If Call MCLUtil.MWInitApplication(Application) bModuleInitialized = True Exit Sub Handle_Error: bModuleInitialized = False End If End Sub
Примечание
Если вы разрабатываете одновременно с несколькими версиями MATLAB и MWComUtil.dll
для примера использование этого синтаксиса:
Set MCLUtil = CreateObject("MWComUtil.MWUtil")
MWUtil
версия модуля, для примера:Set MCLUtil = CreateObject("MWComUtil.MWUtilx.x")
x.x
является определенным номером версии.Запустите среду выполнения MATLAB с опциями среды выполнения MATLAB. Подобно mclInitializeApplication
(MATLAB Compiler SDK).
Аргумент | Напечатать | Описание |
---|---|---|
|
|
Допустимая ссылка только при вызове из приложения Excel COM-клиенты, не входящие в Excel, проходят |
Ничего.
Вызовите эту функцию, чтобы пройти в опциях MATLAB Runtime (nojvm
, logfile
, и т.д.). Вызывайте эту функцию один раз на процесс.
Эта выборка Visual Basic инициализирует MWComUtil
библиотека с текущим образцом Excel. Глобальная переменная типа Object
именованные MCLUtil
содержит образец MWUtil
Класс и другая глобальная переменная типа Boolean
именованные bModuleInitialized
сохраняет состояние процесса инициализации. Частная стандартная подпрограмма InitModule()
создает образец MWComUtil
класс и вызывает MWInitApplicationWithMCROptions
метод с аргументом Application
и строковые массивы, содержащий опции. После успешного выполнения этой функции все последующие вызовы выходят без воссоздания объекта. Когда эта функция успешно выполняется, MATLAB Runtime запускается без JVM™ и логфайла с именем logfile.txt
.
Dim MCLUtil As Object Dim bModuleInitialized As Boolean Private Sub InitModule() If Not bModuleInitialized Then On Error GoTo Handle_Error If MCLUtil Is Nothing Then Set MCLUtil = CreateObject("MWComUtil.MWUtil") End If Dim mcrOptions(1 To 3) as String mcrOptions(1) = "-nojvm" mcrOptions(2) = "-logfile" mcrOptions(3) = "logfile.txt" Call MCLUtil.MWInitApplicationWithMCROptions(Application, mcrOptions) bModuleInitialized = True Exit Sub Handle_Error: bModuleInitialized = False End If End Sub
Примечание
Если вы не используете Excel, передайте Nothing
вместо Application
на MWInitApplicationWithMCROptions
.
Возвращает true
если MATLAB Runtime запускается с JVM; в противном случае возвращается false
.
Ничего.
Boolean
Возвращает true
если MATLAB Runtime инициализируется; в противном случае возвращается false
Ничего.
Boolean
Упакует список переменной длины Variant
аргументы в одну Variant
массив. Эта функция обычно используется для создания varargin
камера из списка отдельных входов. Каждый вход в списке добавляется в массив, только если он не пуст или отсутствует. (В Visual Basic отсутствующий параметр обозначается Variant
тип vbError
со значением &H80020004
.)
Аргумент | Напечатать | Описание |
---|---|---|
|
|
Получает полученный массив |
[Var0], [Var1], ... |
|
Необязательный список |
Ничего.
Эта функция всегда освобождает содержимое pVarArg
перед обработкой списка.
Этот пример использует MWPack
в функции формулы для создания varargin
Камерой передать как параметр входа в метод, скомпилированный из функции MATLAB с сигнатурой
function y = mysum(varargin) y = sum([varargin{:}]);
Функция возвращает сумму элементов в varargin
. Предположим, что эта функция является методом класса с именем myclass
включенный в компонент с именем mycomponent
с версией 1.0. Функция Visual Basic позволяет до 10 входов и возвращает результат y
. Если происходит ошибка, функция возвращает сообщение об ошибке. Эта функция принимает, что MWInitApplication
был вызван ранее.
Function mysum(Optional V0 As Variant, _ Optional V1 As Variant, _ Optional V2 As Variant, _ Optional V3 As Variant, _ Optional V4 As Variant, _ Optional V5 As Variant, _ Optional V6 As Variant, _ Optional V7 As Variant, _ Optional V8 As Variant, _ Optional V9 As Variant) As Variant Dim y As Variant Dim varargin As Variant Dim aClass As Object Dim aUtil As Object On Error Goto Handle_Error Set aClass = CreateObject("mycomponent.myclass.1_0") Set aUtil = CreateObject("MWComUtil.MWUtil") Call aUtil.MWPack(varargin,V0,V1,V2,V3,V4,V5,V6,V7,V8,V9) Call aClass.mysum(1, y, varargin) mysum = y Exit Function Handle_Error: mysum = Err.Description End Function
Распаковка массива Variant
s в отдельные Variant
аргументы. Эта функция обеспечивает обратную функциональность MWPack
и обычно используется для обработки varargout
камера в отдельные Variant
с.
Аргумент | Напечатать | Описание |
---|---|---|
|
|
Входной массив |
|
|
Необязательный начальный индекс (нулевой) в массиве, чтобы начать обработку. По умолчанию = |
|
|
Необязательный флаг автоматического изменения размера. Если этот флаг |
|
|
Необязательный список |
Ничего.
Эта функция может обрабатывать Variant
массив в один один вызов или через несколько вызовов с помощью nStartAt
параметр.
Этот пример использует MWUnpack
для обработки varargout
камера в несколько области значений Excel при автоматическом изменении размера каждой области значений. The varargout
параметр передается из метода, который был скомпилирован из функции MATLAB.
function varargout = randvectors for i=1:nargout varargout{i} = rand(i,1); end
Эта функция создает последовательность nargout
случайные векторы-столбцы с длиной i-го вектора, равной i. предположим, что эта функция включена в класс с именем myclass
включенный в компонент с именем mycomponent
с версией 1.0. Стандартная подпрограмма Visual Basic не принимает аргументов и помещает результаты в столбцы Excel, начиная с A1, B1, C1 и D1. Если происходит ошибка, в поле сообщения отображается текст ошибки. Эта функция принимает, что MWInitApplication
был вызван ранее.
Sub GenVectors() Dim aClass As Object Dim aUtil As Object Dim v As Variant Dim R1 As Range Dim R2 As Range Dim R3 As Range Dim R4 As Range On Error GoTo Handle_Error Set aClass = CreateObject("mycomponent.myclass.1_0") Set aUtil = CreateObject("MWComUtil.MWUtil") Set R1 = Range("A1") Set R2 = Range("B1") Set R3 = Range("C1") Set R4 = Range("D1") Call aClass.randvectors(4, v) Call aUtil.MWUnpack(v,0,True,R1,R2,R3,R4) Exit Sub Handle_Error: MsgBox (Err.Description) End Sub
Преобразует выходные даты из MATLAB в Variant
дат.
Аргумент | Напечатать | Описание |
---|---|---|
|
|
|
Ничего.
MATLAB обрабатывает даты как числа с плавающей запятой с двойной точностью с 0,0, представляющими 0/0/00 00:00:00. По умолчанию числовые даты, которые являются выходными параметрами из скомпилированных функций MATLAB, передаются как Double
s, которые должны быть уменьшены смещением даты COM, а также принуждены к датам COM. The MWDate2VariantDate
метод выполняет это преобразование и дополнительно преобразует даты в форме вектора символов в COM-типы дат.
Этот пример использует MWDate2VariantDate
для обработки числовых дат, возвращенных из метода, скомпилированного из следующей функции MATLAB.
function x = getdates(n, inc) y = now; for i=1:n x(i,1) = y + (i-1)*inc; end
Эта функция создает n
-length вектора-столбца числовых значений, представляющих даты, начиная с текущей даты и времени с каждым элементом, увеличенным на inc
дней. Предположим, что эта функция включена в класс с именем myclass
включенный в компонент с именем mycomponent
с версией 1.0. Стандартная подпрограмма принимает область значений Excel и Double
в качестве входных параметров и помещает сгенерированные даты в поставляемую область значений. Если происходит ошибка, в поле сообщения отображается текст ошибки. Эта функция принимает, что MWInitApplication
был вызван ранее.
Sub GenDates(R As Range, inc As Double) Dim aClass As Object Dim aUtil As Object On Error GoTo Handle_Error Set aClass = CreateObject("mycomponent.myclass.1_0") Set aUtil = CreateObject("MWComUtil.MWUtil") Call aClass.getdates(1, R, R.Rows.Count, inc) Call aUtil.MWDate2VariantDate(R) Exit Sub Handle_Error: MsgBox (Err.Description) End Sub