美文网首页
说说如何在 Excel 中构建类似 Microsoft Proj

说说如何在 Excel 中构建类似 Microsoft Proj

作者: deniro | 来源:发表于2020-12-14 19:25 被阅读0次

    Microsoft Project的任务列表一般情况下都会具有层级结构,即大任务分解为小任务,点击“收缩”按钮,就可以把觉得太长的子任务列表收缩起来。形如:

    如果直接导出,那么这些大小任务都在一列展示,不仅看不出关系,而且还没有伸缩功能。这时就要用到 VBA 在 Excel 中实现类似的功能。

    VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言2

    首先我们需要任务之间的层级关系数据。Microsoft Project 中的“大纲级别”字段描述的就是任务之间的层级关系:

    我们可以先将“大纲级别”字段与其他数据字段一并导出到 Excel 中:

    接着按ALT+F11 进入VBA编辑器,选择插入模块:

    输入如下代码:

    
    Sub 分级显示()
    
    Dim i
    
    i = 2
    
    On Error Resume Next
    
    Do While Cells(i, 1).Value <> ""
    
    Rows(i).OutlineLevel = Cells(i, 1).Value
    
    Cells(i, 2).IndentLevel = Cells(i, 1) - 1
    
    i = i + 1
    
    Loop
    
    End Sub
    
    

    我们来分析一下这段代码:

    • 首先使用Dim来声明变量和分配存储空间3

    • On Error Resume Next 表示程序出现错误时,直接跳到下一条语句;

    • 接着从 Excel的第二行开始,通过 Cells(i,1) 方法取出大纲级别数据。Cells(x,y) 表示取出第 x 行、第 y 列所对应单元格内的内容;

    • 然后使用Rows(i).OutlineLevel 来指定本行的大纲层级4

    • 接着使用 Cells(i, 2).IndentLevel 来指定第二列单元格的缩进量5,如果是第一级则不进行缩进;

    indent ɪnˈdent;

    To start a line of print or writing further away from the edge of the page than the other lines.

    接着点击左上角的绿色箭头按钮,然后在弹出的“宏”对方框中点击“运行”按钮:

    然后关闭 VBA 编辑器。接着再点击“数据”标签内的“分级显示”设置图标:

    取消勾选“明细数据的下方”:

    这样就把“分级显示”框放到了明细数据的上方咯:

    左上角还有一排的层级号,点击相应的层级号,可以按照该层级进行收缩操作:


    参考资料:
    【1】 VBA (Visual Basic宏语言)
    【2】Dim 语句.
    【3】Range.OutlineLevel 屬性 (Excel).
    【4】IndentLevel 属性 (Excel).
    【5】从PROJECT导出到EXCEL中的任务如何快速分级.

    相关文章

      网友评论

          本文标题:说说如何在 Excel 中构建类似 Microsoft Proj

          本文链接:https://www.haomeiwen.com/subject/rsxviktx.html