Вам нужно выбрать Продукты, если вы хотите экземпляр-несс.
Итак ...
InputObjectType(0) = "Product"
...
sInstanceName = ItemSelection.Item(i).Value.Name
Что происходит, когда кто-то выбирает сборку / подсборку? Ничего особенного, потому что у подузлов тоже есть имена экземпляров.
Однако, если вы хотите включить ТОЛЬКО фактические CATParts, вам нужно отфильтровать значение после выбора что-то вроде ...
Dim oInstProd as product
set oInstProd = ItemSelection.Item(i).Value
if TypeName(oInstProd.ReferenceProduct.Parent) = "PartDocument" Then
.... do stuff with only parts...
end If
Свойство ReferenceProduct доставит вам неприятности, если вы используете режим кэширования (он выдаст ошибку). Но это обходной путь, если вам это нужно.