@ Debou.Print Remou выдает ошибку, если форма не открыта.
Большинство разработчиков Access импортируют функцию IsLoaded () в свою базу данных и используют ее. Код в моей версии этого (который может или не может быть отредактирован из исходной версии MS) это:
Function IsLoaded(ByVal strFormName As String) As Boolean
' Returns True if the specified form is open in Form view or Datasheet view.
Const conObjStateClosed = 0
Const conDesignView = 0
If SysCmd(acSysCmdGetObjectState, acForm, strFormName) <> conObjStateClosed Then
If Forms(strFormName).CurrentView <> conDesignView Then
IsLoaded = True
End If
End If
End Function
Чтобы использовать это из Excel, вы можете переписать его так:
Function IsLoaded(ByVal strFormName As String, objAccess As Object) As Boolean
' Returns True if the specified form is open in Form view or Datasheet view.
Const conObjStateClosed = 0
Const conDesignView = 0
Const acSysCmdGetObjectState = 10
Const acForm = 2
If objAccess.SysCmd(acSysCmdGetObjectState, acForm, strFormName) <> conObjStateClosed Then
If objAccess.Forms(strFormName).CurrentView <> conDesignView Then
IsLoaded = True
End If
End If
End Function
(я не проверял это в Excel, но вы поняли)