Det er fordi du mangler at vælge true i shared object :
sc.AddObject "sh", shobj, true
Dette betyder at dit object vil være kendt unden at skulle skrive dit object's navn hver gang. Så skulle dit eksempel virke.
Hvis du ikke vil have dit object til at være shared så skal du skrive :
sc.AddObject "sh", shobj, false
sc.AddCode "msgbox sh.mitnavn"