【发布时间】:2019-05-29 02:50:00
【问题描述】:
在 MS Office 2016 中,我有许多 宏在与 MS Project 交互时似乎变慢了(例如,读取和处理数据)。它可能是我的底层代码、获取/存储数据的机制,但我不确定,希望能提供意见。
我只是在编写一个用于将 MSP 数据提取到数组中的新宏(保存在内存中,我认为这将是最快的,但它似乎很难做到这一点)。这个想法是数组内存访问“应该”比从 MS Excel 桥接到需要提取/放置数据时引用的项目更快?也许这是不正确的。
目标:将每个 MS 项目资源的 3 个部分保存在数组中,最终遍历数组并放入 Excel 中以供其他使用/处理。
在我破坏代码进行审查之前,最初的“阅读”从未完全完成(在我的 1300 个资源中的 926 个)。
下面的想法,或与 MSP 2016 参考库的接口?与仅在 MS Excel 中工作相比,它似乎变得非常缓慢。
子程序:
Private Sub cb_IMSResourceImport_Click()
Dim Prj As Project
Set Prj = GetObject(Me.cboMaintainToProject.Value)
Dim ResourceMatrix() As String
Prj.Application.WindowActivate Prj.Name
ReDim ResourceMatrix(Prj.Resources.Count, 2)
ActiveWorkbook.Sheets("Resource Table").Range("A2:C" & C`Str(ActiveWorkbook.ActiveSheet.UsedRange.Rows.Count)).ClearContents
For i = 1 To UBound(ResourceMatrix)
ResourceMatrix(i - 1, 0) = Prj.Resources(i).ID
ResourceMatrix(i - 1, 1) = Prj.Resources(i).Name
ResourceMatrix(i - 1, 2) = Prj.Resources(i).Code
Next i
For i = 0 To UBound(ResourceMatrix)
ActiveWorkbook.Sheets("Resource Table").Cells(i + 1, 1).Value = ResourceMatrix(i, 0)
ActiveWorkbook.Sheets("Resource Table").Cells(i + 1, 2).Value = ResourceMatrix(i, 1)
ActiveWorkbook.Sheets("Resource Table").Cells(i + 1, 3).Value = ResourceMatrix(i, 2)
Next i
End Sub
【问题讨论】:
标签: excel vba ms-project