少々改変してみる。
ファイルを開いてないとき非表示、開いた場合ラベルの変更
<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui"
onLoad="Ribbon_Load">
<backstage>
<button id="CloseAndOpen"
imageMso="FileOpen"
insertAfterMso="FileCloseDatabase"
getLabel="BS_CmdGetLabel"
getVisible="BS_CmdGetVisible"
onAction="BS_CmdClick" />
</backstage>
</customUI>
getLabel/getVisibleでBackstage上のbuttonを制御
コールバックは、RibbonAddinForMe.vb に。
Private Function CurrentProjectIsOpened() As Boolean
Return Not String.IsNullOrEmpty(
Globals.ThisAddIn.Application.CurrentProject.FullName)
End Function
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_CmdGetVisible(control As Office.IRibbonControl) As Boolean
Return CurrentProjectIsOpened()
End Function
Public Function BS_CmdGetLabel(control As Office.IRibbonControl) As String
If CurrentProjectIsOpened() Then
If Globals.ThisAddIn.IsMDB Then
Return "データベースを閉じて開く"
Else
Return "プロジェクトを閉じて開く"
End If
Else
Return ""
End If
End Function
ThisAddIn.vb にプロパティを追加
Public ReadOnly Property IsMDB As Boolean
Get
Return Me.Application.CurrentProject.ProjectType =
Access.AcProjectType.acMDB
End Get
End Property
データベースが開かれているかどうかをCurrentProject.FullNameを参照することで代用してみている。いまのところ問題は起きてない。
CurrentProject.ProjectType=acNullの場合開いていないということなのだろうか。まぁここで使用することは向かないような気がするのでこれでいいかな。
0 件のコメント:
コメントを投稿