2011/09/25

access2010 VSTOアプリケーションアドイン -1-

基本的に当たって砕けろ。
正式なサポートではないようだけど開発環境のカスタマイズということができそうだしやってみている。なにができそうなのかなと。
  • UIカスタマイズ
    Office2010でリボンUIをアプリケーションレベルでカスタマイズできるのだけれども、もう少し突っ込んだカスタマイズができそう。アドインの有効無効で切り替えができることがよいかな。
  • カスタムコマンド実装/コマンドのオーバーライド
    カレントデータベースを閉じてそして開くとか、最適化実行前にバックアップを取るとか、データベースプロパティの編集とか。アプリケーションパーツで実装できることもあるけどたまに不安定なことあるし。
とりあえず必要なものは、Visual StudioとVSTOテンプレート
テンプレートは、
Visual Studio 2010 - VSTO (VB) Access 2010 Template/Joao Livio { MIX ~ UP on USA}
Visual Studio 2008/Access2007用のテンプレートはCodoPlexに。

とりあえず、テンプレートからプロジェクトを新規作成
リボンを追加
TODOにある通り、プロシージャをThisAddIn.vbに。F5押下で確認
とりあえず動作確認完了。
クリーンを実行するとアドインは解除になる。
<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load">
  <backstage>
    <button id="CloseAndOpen" label="データベースを閉じて開く" 
            imageMso="FileOpen" insertAfterMso="FileCloseDatabase" 
            getEnabled="BS_CmdGetEnabled" onAction="BS_CmdClick"/>
  </backstage>
</customUI>
RibbonXMLを編集してこんな感じ。
Public Sub BS_CmdClick(control As Office.IRibbonControl)
    Dim CurrentProjectFullName As String = Globals.ThisAddIn.Application.CurrentProject.FullName
    Globals.ThisAddIn.Application.CloseCurrentDatabase()
    Globals.ThisAddIn.Application.OpenCurrentDatabase(CurrentProjectFullName)
End Sub

Public Function BS_CmdGetEnabled(control As Office.IRibbonControl) As Boolean
    Return Not String.IsNullOrEmpty(Globals.ThisAddIn.Application.CurrentProject.FullName)
End Function
CurrentProject.FullNameはPathかなにかを返してくれるみたいだからいい感じ。Name/Pathは開いていない場合エラーになる。で、Backstageは開くたびにInvalidateでちょうどいい。
とりあえず動作するからいいよねで確認。作法的のことは追って勉強。
GCってなぁに?

0 件のコメント: