2011/09/29

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

VSTO保育園児ゆえまだまだ基本的なことのメモ
コマンドのオーバーライドをアプリケーションレベルで実装。
<commands>
    <command idMso="FileCompactAndRepairDatabase" 
             onAction="cmdActionOverride"/>
</commands>
最適化/修復コマンドをオーバーライド

Public Sub cmdActionOverride(control As Office.IRibbonControl,
                             ByRef cancelDefault As Boolean)
    cancelDefault = MessageBox.Show("最適化する?",
                                    "実行前確認",
                                    MessageBoxButtons.OKCancel,
                                    MessageBoxIcon.Warning
                                    ) = DialogResult.Cancel
End Sub
command要素コールバックで既定のコマンドアクション前に割り込む。引数をFalseにすると既定のコマンドアクションは実行される。なので、最適化/修復前にバックアップをとるとすると、
Public Sub cmdActionOverride(control As Office.IRibbonControl,
                             ByRef cancelDefault As Boolean)
    Select Case control.Id
        Case "FileCompactAndRepairDatabase"
            QuickBackUp()
            cancelDefault = False
        Case "" 'commandID
            'Action
            'cancelDefault = False
    End Select
End Sub

Private Sub QuickBackUp()
    Dim AutoCompact As Boolean = Globals.ThisAddIn.Auto_Compact
    Dim FileFullName As String =
        Globals.ThisAddIn.Application.CurrentProject.FullName
    Dim FileName As String = IO.Path.GetFileNameWithoutExtension(FileFullName)
    If AutoCompact Then Globals.ThisAddIn.Auto_Compact = False
    Globals.ThisAddIn.Application.CloseCurrentDatabase()
    My.Computer.FileSystem.CopyFile(FileFullName,
                                    Replace(FileFullName,
                                            FileName,
                                            FileName +
                                            Now.ToString("_yyyyMMddHHmmss")),
                                    FileIO.UIOption.AllDialogs,
                                    FileIO.UICancelOption.DoNothing)
    Globals.ThisAddIn.Application.OpenCurrentDatabase(FileFullName)
    If AutoCompact Then Globals.ThisAddIn.Auto_Compact = True
End Sub

0 件のコメント: