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 件のコメント:
コメントを投稿