Я пытаюсь собрать продолжительность задач Ms Project из Matlab через функцию VBA. Идея состоит в том, чтобы собрать все длительности в массив (вариант в VBA), а затем передать эту переменную в Matlab, вызвав функцию. Код VBA включает в себя подпроцесс и функцию. Я могу вызвать подпроцесс из matlab, но он не возвращает никакого значения, поскольку это подпроцесс, а не функция. Однако, когда я напрямую вызываю функцию, я получаю сообщение об ошибке.
Код VBA:
Sub TsksDur()
Dim TsksDur As Variant
Dim x As Long
TsksDur = GatherTsksDur()
End Sub
Public Function GatherTsksDur()
Dim TsksDur As Variant
Dim x As Long
Dim Tsk As Task
'Resize Array prior to loading data
ReDim TsksDur(ActiveProject.Tasks.Count)
'Loop through each cell in Range and store value in Array
For Each Tsk In ActiveProject.Tasks
TsksDur(x) = Tsk.Duration
x = x + 1
Next Tsk
'Print values to Immediate Window (Ctrl + G to view)
'For x = LBound(TsksDur) To UBound(TsksDur)
'Debug.Print TsksDur(x)
'Next x
GatherTsksDur = TsksDur
Код Matlab:
MSP_a = actxserver('MSProject.Application');
invoke(MSP_a,'FileOpen',[out_path filesep fname fext]); % Open the Ms Project defined by fname
TskDur=invoke(MSP_a,'Run','TsksDur'); % Runs properly but returns nothing
TskDur=invoke(MSP_a,'Run','GatherTsksDur'); % Does not work
Любой может помогите мне понять, что происходит и как решить эту проблему?
Спасибо, Хорхе