Закрыть все открытые макросы
Автор Daniel Pineault   
29.04.2023 г.

В этом посте я хотел бы представить еще одну функцию, которая закроет все открытые в данный момент макросы в текущей базе данных.

Код очень прямолинеен. Он просто перебирает все макросы базы данных (CurrentData.AllMacros), проверяет, загружен ли макрос в данный момент (IsLoaded), и если да, то закрывает его (DoCmd.Close).

'--------------------------------------------------------------------------------------- 
' Procedure : CloseAllOpenMacros
' Author : Daniel Pineault, CARDA Consultants Inc.
' Website : http://www.cardaconsultants.com
' Purpose : Close all the currently open Macros in the database
' Copyright : The following is release as Attribution-ShareAlike 4.0 International
' (CC BY-SA 4.0) - https://creativecommons.org/licenses/by-sa/4.0/
' Req'd Refs: None required
'
' Usage:
' ~~~~~~
' ? CloseAllOpenMacros
' Returns -> True => Closed all Macros successfully
' False => A problem occurred
'
' Revision History:
' Rev Date(yyyy/mm/dd) Description
' **************************************************************************************
' 1 2015-02-17 Initial Release
' 2 2023-02-09 Update variable naming, Error handler, copyright
'---------------------------------------------------------------------------------------
Function CloseAllOpenMacros() As Boolean
On Error GoTo Error_Handler
Dim oMcrs As Object
Dim oMcr As Access.AccessObject

Set oMcrs = CurrentProject.AllMacros

For Each oMcr In oMcrs 'Loop all the queries
If oMcr.IsLoaded = True Then 'check if it is open
DoCmd.Close acMacro, oMcr.Name, acSaveNo
End If
Next oMcr

CloseAllOpenMacros = True

Error_Handler_Exit:
On Error Resume Next
Set oMcr = Nothing
Set oMcr = Nothing
Exit Function

Error_Handler:
MsgBox "The following error has occurred" & vbCrLf & vbCrLf & _
"Error Source: CloseAllOpenMacros" & vbCrLf & _
"Error Number: " & Err.Number & vbCrLf & _
"Error Description: " & Err.Description & _
Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Line No: " & Erl) _
, vbOKOnly + vbCritical, "An Error has Occurred!"
Resume Error_Handler_Exit
End Function

Пример использования
Затем, чтобы использовать функцию, мы просто делаем:
Call CloseAllOpenMacros
или
If CloseAllOpenMacros = True Then     
'...
End If

Источник
Access – VBA – Close All Open Macros

 


Просмотров: 1103

  Ваш коментарий будет первым

Добавить коментарий
Имя:
E-mail
Коментарий:



Код:* Code