vba - 从 Matlab 调用 VBA Ms Project 函数
问题描述
我正在尝试通过 VBA 函数从 Matlab 收集 Ms Project 任务的持续时间。这个想法是在一个数组(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
任何人都可以帮助我了解发生了什么,以及如何解决这个问题?
谢谢, 豪尔赫
解决方案
推荐阅读
- android - 当应用程序在后台运行时,Android 能否在不终止整个进程的情况下终止活动?
- c - printf在C中具有多个指针作为参数
- python - 为什么在此示例 python 中将字符串添加为字符?
- powershell - 计算文件中的日期条目。- 电源外壳
- javascript - Array.sort 按对象键/值的字母顺序
- html - 下载页面菜单实时更新 HTML 和 Bootstrap
- node.js - 是否可以使用 Azure Key Vault 的 Keys API 创建 JSON Web 令牌?
- .net - 如何获得 IBM DB2 for iSeries 的数据提供者?
- reactjs - 如何使用 useRef 在图像之间切换
- swift - Swift枚举自定义原始类型不能用不同的文字表达