VBA基础
关闭所有打开的Access对象
2004-11-23 11:38:12

Public Function CloseObj()Dim intSt As Integer, intType As Integer, strName As StringDim rs As DAO.Recordset, J As Long, VarReturn As Variant'Set rs = NothingSet rs = CurrentDb.OpenRecordset("SELECT MSysObjects.Name, MSysObjects.Type " & _                                 " FROM MSysObjects WHERE (((MSysObjects.Name) " & _                                 " Not Like 'Msys*' And (MSysObjects.Name) Not Like '~*') " & _                                 " AND ((MSysObjects.Type)<>3 And (MSysObjects.Type)<>-32757 " & _                                 " And (MSysObjects.Type)<>-32758));")'Set rs = CurrentDb.OpenRecordset("Select * from DB_Object")rs.MoveFirstVarReturn = SysCmd(acSysCmdInitMeter, "关闭OBJECT", rs.RecordCount)Do Until rs.EOFJ = J + 1intType = GetTT(rs.Fields(1))strName = rs.Fields(0)DoCmd.Close intType, strName, acSaveYes'DoCmd.DeleteObject intType, strNamers.MoveNext  VarReturn = SysCmd(acSysCmdUpdateMeter, J)LoopSet rs = NothingEnd FunctionPublic Function GetTT(var As Variant) As IntegerIf var = -32768 ThenGetTT = 2ElseIf var = 1 Or var = 6 ThenGetTT = 0ElseIf var = -32766 ThenGetTT = 4ElseIf var = -32761 ThenGetTT = 5ElseIf var = -32764 ThenGetTT = 3ElseIf var = 5 ThenGetTT = 1End IfEnd Function

本人用的,关闭所有的OBJECT