如何自动使 Excel 个单元格等于项目单元格?

How automatically make Excel cells equal to Project cells?

我有 2 个文档,一个 Excel 文档和一个 Microsoft Project 文档。我想在 Excel 文档中添加一个“更新”按钮,使某些单元格与项目文件中的某些单元格相等。

在某种程度上,我正在尝试做与这个问题相反的事情:How can I make a macro in Excel workbook tab to open MS Project and copy reference cells

这是我目前拥有的按钮宏: (在此示例中,项目文件中的 tasks/columns 之一是“ID”,我试图使 Cell (4,7) 等于的所需值存在于同一 ID 行的另一列中项目文件。无法确定如何执行此操作。)

Sub Update()

projApp As MSProject.Application

Set ProjApp = GetObject(, "MSProject.Application")

projApp.Visible = False

projApp.FileOpenEx "C:\files\project.mpp"

ActiveWorkbook.Worksheets("Inputs").Cells(4,7) = projApp.Find Field:= "ID", Test:="equals", Value:="5748"

End Sub

此代码将打开一个项目文件,按 ID 搜索任务,然后将数据从该任务传输到 Excel 文件。这里重要的是 Find 方法 returns True/False 而不是对找到的任务的引用。

Sub Update()

Dim projApp As MSProject.Application
Dim iOpened As Boolean

On Error Resume Next
Set projApp = GetObject(, "MSProject.Application")
If projApp Is Nothing Then
    Set projApp = CreateObject("MSProject.Application")
    iOpened = True
End If
projApp.Visible = True

projApp.FileOpenEx "C:\files\project.mpp"


If projApp.Find(Field:="ID", Test:="equals", Value:="5748") Then

    Dim t As MSProject.Task
    Set t = projApp.ActiveCell.Task
    ActiveWorkbook.Worksheets("Inputs").Cells(4, 7) = t.Finish
    
End If

projApp.FileCloseEx pjDoNotSave
If iOpened Then
    projApp.Quit pjDoNotSave
End If

End Sub

备注:

  • 此代码不依赖于项目应用程序是否已打开(GetObject 与 CreateObject)。
  • 在代码完美运行之前,最好确保自动化应用程序可见(在本例中为项目)。