Hi Mark,
You can do it even if the class is not loaded. If your VI is not part of a library (lvclass, lvlib, xcontrol, ...) then it's scope will be "invalid". Otherwise, it's about the same thing except you start from the VI reference and check it's owning library reference. If it exists, then it's part of a library for which you can find a match by using the ProjectItem's VI reference. The VI reference is not always valid (because all library members are not automatically VIs) but if you can sort out the errors and invalid references, then you can match the correct ProjectItem with it's associated VI reference.
Note that this works for any libraries, not just lvclasses. If your VI is a private member of a lvlib, then it's gonna return the correct access scope too.
AccessScopeFromVI.vi