2016-07-28 12 views
4

「SaveClose」というボタンを持つブックが1つあります。最後のブックが開かれている場合は、そのボタンのイベントを使用してExcelアプリケーション全体を閉じます。問題は、未知のpersonal.xlsbが開いているか、目に見えない他のマクロブックが開いている可能性があります。他の実行可能なExcelワークブックが開いているかどうかを知りたい場合です。表示されているワークブックのチェックはありますか?それが最後のワークブックであれば、近いアプリケーションをエクセル、アクティブなブックを閉じない場合は、ここで私が得たものです:ワークブックが表示されていない場合最後のワークブックであればExcelを終了しますか?

Sub CloseForceSave() 

'Save the workbook. 
ThisWorkbook.Save 

'If this is the only workbook opened in the current session, then... 
If Workbooks.Count = 1 Then "or Workbooks.Count = 2" to account for personal.xlsb 
'...quit Excel 
Application.Quit 
'Else... 
Else 
'...close the active workbook 
ThisWorkbook.Close 
End If 

End Sub 

答えて

2

を参照してください

を「Workbook.IsAddinプロパティ」をチェックしてみてください。ウィンドウが表示されているワークブックが1つしかない場合は、アプリケーションを終了します。ループよりも良い計算方法はわかりませんが、これをパフォーマンス上の問題とするには十分なワークブックを開いたことがありません。

Function VisibleWorkbookCount() As Long 

    Dim wb As Workbook 
    Dim wd As Window 
    Dim lReturn As Long 

    For Each wb In Application.Workbooks 
     For Each wd In wb.Windows 
      If wd.Visible Then 
       lReturn = lReturn + 1 
       Exit For 
      End If 
     Next wd 
    Next wb 

    VisibleWorkbookCount = lReturn 

End Function 
関連する問題