如何在VSTO中重载SharePoint FileCheckIn操作

时间:2012-11-26 11:51:06

标签: c# vba sharepoint ms-word vsto

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

在我的Ribbon 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。

- Edit-- 我在Office 2013中完成了一些测试。更糟糕的是,我害怕:

  • 当CheckIn / CheckOut / Discard为时,没有C#回调触发 在UI中执行
  • 只有FileCheckIn VBA方法可以正常工作
  • 有趣的是,以下代码行会导致CheckIn C# 回火:

    this.Application.CommandBars.ExecuteMso( “FileCheckIn”);

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

0 个答案:

没有答案