2

VSTO を使用して SharePoint の FileCheckIn 操作を過負荷にすることはできますか? マイクロソフトはそれを実装するのを忘れた可能性があると思います(および他の多くの操作)

リボン XML に、次の 3 つのコマンドを追加します。

<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