2

任何人都可以使用 VSTO 重载 SharePoint FileCheckIn 操作吗?我认为微软可能已经忘记实现它(以及许多其他操作)

在我的功能区 XML 中,我添加了以下三个命令:

<commands>
  <command idMso="FileCheckIn" onAction="FileCheckIn_Click"/>
  <command idMso="FileCheckOut" onAction="FileCheckOut_Click"/>
  <command idMso="FileCheckOutDiscard" onAction="FileCheckOutDiscard_Click"/>
</commands>

使用相应的 C# 回调:

    public void FileCheckIn_Click(Office.IRibbonControl control, ref bool cancelDefault)
    { cancelDefault = false; /*Does not work*/ }

    public void FileCheckOut_Click(Office.IRibbonControl control, ref bool cancelDefault)
    { cancelDefault = false; /* Works! */ }

    public void FileCheckOutDiscard_Click(Office.IRibbonControl control, ref bool cancelDefault)
    { cancelDefault = false; /*Does not work*/ }

有趣的是,FileCheckOut 工作正常,但 FileCheckIn 和 FileCheckOutDiscard 不能。奇怪的是,我在 VBA 中取得了更大的成功:

Public Sub FileCheckIn()
    MsgBox "I work!"
End Sub
Public Sub FileCheckOut()
    MsgBox "I work!"
End Sub
Public Sub FileCheckOutDiscard()
    MsgBox "I don't.."
End Sub

希望我在路上的某个地方犯了一个错误。帮助表示赞赏。据我所知,此功能在 Office 2007 和 Office 2010 中已被破坏。我还没有测试过 Office 2013。

--编辑-- 我已经在 Office 2013 中完成了一些测试。更糟糕的是,我担心:

  • 在 UI 中执行 CheckIn/CheckOut/Discard 时,不会触发任何 C# 回调
  • 只有 FileCheckIn VBA 方法有效
  • 有趣的是,以下代码行会触发 CheckIn C# 回调:

    this.Application.CommandBars.ExecuteMso("FileCheckIn");

我想 Office 2013 中的 UI/Backstage 更改可能会更改 VBA 例程的名称。

4

0 回答 0