如何在MS Project 2016中创建自定义功能区选项卡?

时间:2017-03-02 03:08:18

标签: vba ms-project

我有两个VBA宏在MS Project 2013中创建自定义选项卡。这三个宏是:

Private Sub Project_Open(ByVal pj As Project)
     AddEVMRibbon
End Sub

Private Sub removeEVMRibbon()
    ribbonXml = "<mso:customUI  xmlns:mso=""http://schemas.microsoft.com/office/2009/07/customui"">" & "<mso:ribbon></mso:ribbon></mso:customUI>"
    ActiveProject.SetCustomUI (ribbonXml)
End Sub

Private Sub AddEVMRibbon()
Dim ribbonXml As String

    ribbonXml = "<mso:customUI xmlns:mso=""http://schemas.microsoft.com/office/2009/07/customui"">"
    ribbonXml = ribbonXml + "  <mso:ribbon>"
    ribbonXml = ribbonXml + "    <mso:qat/>"
    ribbonXml = ribbonXml + "    <mso:tabs>"
    ribbonXml = ribbonXml + "      <mso:tab id=""macroTab"" label=""EVM"" insertAfterQ=""mso:TabFormat"">"
    ribbonXml = ribbonXml + "        <mso:group id=""testGroup"" label=""Test"" autoScale=""true"">"
    ribbonXml = ribbonXml + "          <mso:button id=""export_to_excel"" label=""Set EVM Calc Method"" "
    ribbonXml = ribbonXml + "imageMso=""DiagramTargetInsertClassic"" onAction=""Set_EVM_Method""/>"
    ribbonXml = ribbonXml + "          <mso:button id=""get_evm_method"" label=""EVM to Excel"" "
    ribbonXml = ribbonXml + "imageMso=""DiagramTargetInsertClassic"" onAction=""evm_to_excel""/>"
    ribbonXml = ribbonXml + "        </mso:group>"
    ribbonXml = ribbonXml + "      </mso:tab>"
    ribbonXml = ribbonXml + "    </mso:tabs>"
    ribbonXml = ribbonXml + "  </mso:ribbon>"
    ribbonXml = ribbonXml + "</mso:customUI>"

    ActiveProject.SetCustomUI (ribbonXml)

End Sub

这些在MS Project 2013中正常工作,但今天我有机会在MS Project 2016中运行它们,它们失败了,相当惊人。

在2013和2016项目中,EVM标签正确显示,并且有两个选项,&#34;设置EVM方法&#34;和#34; EVM到Excel,&#34;单击该自定义选项卡时出现。

在Project 2013中,单击某个选项会执行与XML中的选项关联的VBA宏。在Project 2016中,只需将鼠标悬停在两个选项中的任何一个上,都会导致Project立即失败,这样我就可以使用#34; Microsoft Project已停止工作&#34;然后&#34; Microsoft Project正在重启&#34;消息。

我从来没有机会点击该选项,因为当光标触摸选项时它会立即失败。

Project 2013和2016之间是否有某些更改会导致此自定义功能区栏标签在2016年失败?我无法找到任何涉及这种变化的内容。

Project 2016中的自定义标签及其选项是否需要采用与2013年不同的编码方式?任何和所有帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

更新项目为我解决了这个问题。 以下链接是当前的Project 2016更新。究竟在更新中修复了哪个问题未知。 https://support.microsoft.com/en-us/help/4020152/may-9-2017-update-for-microsoft-office