在vba中缩进mpp文件(Ms项目文件)中的任务(excel到mpp文件)

时间:2017-02-15 13:28:01

标签: vba excel-vba indentation microsoft-project-vba mpp

我是第一次使用MPP文件的VB开发人员。

我的代码从Excel读取数据并成功写入一些列和行的mpp文件。

1)如何选择MPP文件中的单个单元格,因为我有一个场景,我将与下一个行单元格进行比较并进行一些操作

2)为什么我们在mpp文件中没有自定义列(如计算机名,光盘名等),它给出了错误

3)如何缩进单元格使一个单元格成为其他单元格下面的其他单元格,它应该遍历循环

删除所有任务的代码

For Each oSubTasks In oTasks
    If Not oSubTasks Is Nothing Then
        oSubTasks.Delete
    End If
Next oSubTasks

获取列值的代码

For Each oSubTasks In oTasks
'if the frist row is blank
    If oSubTasks.GetField(FieldNameToFieldConstant("Duration")) = "" Then Exit For
    If oSubTasks.GetField(FieldNameToFieldConstant("Duration")) <> "" Then
         Mpplastrow = Mpplastrow + 1
    End If
Next oSubTasks

自定义列的代码获取错误

If oSubTasks.GetField(FieldNameToFieldConstant("computer name")) = sh1.Cells(rw, primecol).Value Then
'    oTask.SetField FieldID:=oApp.FieldNameToFieldConstant("computer name"), Value:=sh1.Cells(rw, primecol).Value
'Else
'    oTask.SetField FieldID:=oApp.FieldNameToFieldConstant("computer name"), Value:=sh1.Cells(rw, primecol).Value
'End If

1 个答案:

答案 0 :(得分:0)

要阅读每个MSP任务的缩进级别,并且能够在内部(或外部)缩进,请尝试类似下面的代码:

Option Explicit

Sub IndentTasks()

Dim Tsk As Task

For Each Tsk In ThisProject.Tasks            
    Select Case Tsk.OutlineLevel '<-- read the current taks Outline Level
        Case 1
            If Tsk.ID <> 1 Then
                Tsk.OutlineIndent '<-- indent inside (to the right)
            End If

        Case Is > 6 '<-- don;t want your Project to be too indented inside
            Tsk.OutlineOutdent '<-- indent outside (to the left)

    End Select
Next Tsk

End Sub