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

在vba(excel到mpp文件)中缩进mpp文件(Ms项目文件)中的任务,excel,vba,indentation,ms-project,Excel,Vba,Indentation,Ms Project,我是一名VB开发人员,第一次使用MPP文件 我的代码从Excel中读取数据,并成功地将某些列和行的数据写入mpp文件 1) 如何选择MPP文件中的单个单元格,因为我有一个场景,在这个场景中,我将与下一行单元格进行比较并执行一些操作 2) 为什么我们不能在mpp文件中自定义列(如计算机名、光盘名等),因为它给出了一个错误 3) 如何缩进单元格,使一个单元格在其下作为其他单元格的主单元格,并使其穿过循环 删除所有任务的代码 For Each oSubTasks In oTasks If No

我是一名VB开发人员,第一次使用MPP文件

我的代码从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

要读取每个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
选项显式
子任务()
调暗Tsk作为任务
用于此项目中的每个Tsk。任务

选择Case Tsk.OutlineLevel“您阅读了下面的答案和代码了吗?你的意思是这样的吗?谢谢Shai Rado,这非常有帮助。要添加,我如何获得列名称和列字段的值。
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