「ツールバー」の撤去は、親となるワークブックが閉じられた時ですが、これには2つの条件があります。
'***************************************************************************************************
' アドインの動作テスト(ワークブックイベント記述) ThisWorkbook(Class)
'
' 作成者:井上治 URL:https://www.ne.jp/asahi/excel/inoue/ [Excelでお仕事!]
'***************************************************************************************************
' [参照設定]
' ・Microsoft Scripting Runtime
'***************************************************************************************************
' 変更日付 Rev 変更履歴内容---------------------------------------------------------------------->
' 04/11/13(1.0.0)新規作成
' 19/06/16(1.1.0)*.xlam版アドイン用に再作成
'***************************************************************************************************
Option Explicit
'===================================================================================================
Private Const g_cnsADDIN = "ADDIN_TEST.xlam" ' アドインファイル名
Private Const g_cnsSETTEI = "設定" ' 設定シート名
Private Const g_cnsPASS = "password" ' PW
Private g_swCLOSE As Boolean ' CLOSE判定
'***************************************************************************************************
' ■■■ ワークブックイベント ■■■
'***************************************************************************************************
'* 処理名 :Workbook_BeforeClose
'* 機能 :ブックClose前イベント
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :Arg1 = Cancel(Boolean) ※Ref参照
'---------------------------------------------------------------------------------------------------
'* 作成日 :2004年11月13日
'* 作成者 :井上 治
'* 更新日 :2019年06月16日
'* 更新者 :井上 治
'* 機能説明:ツールバー削除の処理を呼び、必要ならアドインを閉じる
'* 注意事項:
'***************************************************************************************************
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'-----------------------------------------------------------------------------------------------
Const cnsTitle As String = "終了処理"
Dim xlAPP As Application ' Excel.Application
Dim objWBK As Workbook ' 本ブック
Dim objSH_SETTEI As Worksheet ' 設定シート
Set xlAPP = Application
Set objWBK = ThisWorkbook
Set objSH_SETTEI = objWBK.Worksheets(g_cnsSETTEI)
'-----------------------------------------------------------------------------------------------
' アドインが開かれていない場合は処理なし
If objSH_SETTEI.Cells(1, 1).Value <> g_cnsADDIN Then Exit Sub
'-----------------------------------------------------------------------------------------------
' 非保存の確認
If Not objWBK.ReadOnly Then
Select Case MsgBox("このブックは保存されていません。" & vbCr & _
"保存して終了しますか?", vbYesNoCancel, cnsTitle) ' ①
Case vbYes
xlAPP.StatusBar = False
objWBK.Save ' 上書き保存 ' ②
Case vbCancel
Cancel = True ' Closeをキャンセル ' ③
Exit Sub
End Select
End If
'-----------------------------------------------------------------------------------------------
' ツールバー削除の処理を呼ぶ(引数は本ブック名) ※アドイン削除指示が返る
If xlAPP.Run("'" & g_cnsADDIN & "'!ToolBarDelete", objWBK.Name) Then ' ④
' アドイン削除指示の時はアドインをCLOSE
On Error Resume Next
xlAPP.Workbooks(g_cnsADDIN).Close False ' ⑤
End If
xlAPP.StatusBar = False
g_swCLOSE = True
objWBK.Saved = True ' 保存済みにする
End Sub