It's ugly and maybe not complete, but it works!
SELECT IIf([MSysObjects].[Type]=1, 'TABLE',
IIf([MSysObjects].[Type]=5, 'QUERY',
IIf([MSysObjects].[Type]=-32768, 'FORM',
IIf([MSysObjects].[Type]=-32764, 'REPORT',
IIf([MSysObjects].[Type]=-32766, 'MACRO',
IIf([MSysObjects].[Type]=-32761, 'MODULE',
IIf([MSysObjects].[Type]=-32756, 'PAGE',
IIf([MSysObjects].[Type]=8, 'RELATIONSHIPS',
IIf([MSysObjects].[Type]=6, 'TABLE LINKED',
'Unknown'))))))))) AS ObjectType,
MSysObjects.Name,
MSysObjects.Type
FROM MSysObjects
WHERE (((MSysObjects.Name) Not Like "~*"
and (MSysObjects.Name) Not Like "Msys*")
and ((MSysObjects.Type) Not In (2,
3)))
ORDER BY IIf([MSysObjects].[Type]=1, 'TABLE',
IIf([MSysObjects].[Type]=5, 'QUERY',
IIf([MSysObjects].[Type]=-32768, 'FORM',
IIf([MSysObjects].[Type]=-32764, 'REPORT',
IIf([MSysObjects].[Type]=-32766, 'MACRO',
IIf([MSysObjects].[Type]=-32761, 'MODULE',
IIf([MSysObjects].[Type]=-32756, 'PAGE',
IIf([MSysObjects].[Type]=8, 'RELATIONSHIPS',
IIf([MSysObjects].[Type]=6, 'TABLE LINKED',
'Unknown'))))))))),
MSysObjects.Name;