我有两个 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
Run Code Online (Sandbox Code Playgroud)
这些在 MS Project 2013 中可以正常工作,但今天我有机会在 MS Project 2016 中运行它们,但它们失败了,而且非常严重。
在 Project 2013 和 2016 中,EVM 选项卡均正确显示,并且单击该自定义选项卡时会出现两个选项“设置 EVM 方法”和“EVM 到 Excel”。
在 Project 2013 中,单击选项会执行与 XML 中的选项关联的 VBA 宏。在 Project 2016 中,只需将鼠标悬停在两个选项中的任何一个上就会导致 Project 立即失败,并显示“Microsoft Project 已停止工作”然后“Microsoft Project 正在重新启动”消息。
我从来没有机会单击该选项,因为当光标触摸该选项时它会立即失败。
项目 2013 和 2016 之间是否发生了某些变化,导致此自定义功能区栏选项卡在 2016 年失败?我无法找到任何涉及此类更改的内容。
Project 2016 中的自定义选项卡及其选项是否需要与 2013 中不同的编码?任何和所有的帮助将不胜感激。
小智 1
更新项目为我解决了这个问题。下面的链接是当前 Project 2016 更新的链接。更新中具体解决了什么问题尚不清楚。 https://support.microsoft.com/en-us/help/4020152/may-9-2017-update-for-microsoft-office