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
Распаковка массива Variants в отдельные 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, передаются как Doubles, которые должны быть уменьшены смещением даты 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