|
|
|
| Добрый день.
Может кто подскажет как можно в аксесе програмно закрыть все открытые окна (таблицы, формы, отчеты) | |
|
| |
|
|
|
| смотрите Application.CurrentProject.allforms
Application.CurrentProject.alltables
и свойство isloaded (кажется так) | |
|
| |
|
|
|
| Как ни странно, отлично работает такой код
Public Sub closeall()
Do While Forms.Count > 0
DoCmd.Close acForm, Forms(0).Name
Loop
Do While Reports.Count > 0
DoCmd.Close acReport, Reports(0).Name
Loop
End Sub
|
===================
Лучше оформить в виде функции и назначить в макросе autokeys какую-нибудь клавишу
^{F7} - запускПрограммы
...
Имя функции closeall()
===================
и будет вам счастье...
| |
|
| |
|
|
|
| Неа.
Окна таблиц и запросов в режиме DataSheet не закроются. | |
|
| |
|
|
|
| Да таблицы не проверял. Lukas, как об., прав. | |
|
| |
|
|
|
| Для таблиц и запросов
Public Function IsLoadedQry(ByVal strQName As String) As Boolean
IsLoadedQry = False
If SysCmd(acSysCmdGetObjectState, acQuery, strQName) = acObjStateOpen Then
IsLoadedQry = True
End If
End Function
''''
Public Function IsLoadedTbl(ByVal strQName As String) As Boolean
IsLoadedTbl = False
If SysCmd(acSysCmdGetObjectState, acTable, strQName) = acObjStateOpen Then
IsLoadedTbl = True
End If
End Function
''''
Public Sub closetblqvr()
Dim tdf As TableDef
Dim qdf As QueryDef
For Each tdf In CurrentDb.TableDefs
If IsLoadedTbl(tdf.Name) Then DoCmd.Close acTable, tdf.Name
Next tdf
For Each qdf In CurrentDb.QueryDefs
If IsLoadedQry(qdf.Name) Then DoCmd.Close acQuery, qdf.Name
Next qdf
End Sub
|
| |
|
| |