Тема: Как определить на каком именно листе вставлен блок

Добрый день коллеги.. Прочитал много статей, на основе них написал функцию. Определяет блоки с заданным именем в файле чертежа и определяет по ID к какому layoty или на каком они вставлены.Далее определяет габарит.
Сама функция

 
Public Function BlockFrameFound(minExt As Variant, maxExt As Variant, blkname As String) As Boolean

    Dim blocks() As AcadBlockReference
    Dim blkref As AcadBlockReference
    Dim objSpace As AcadBlock
    Dim blkColl As New Collection
    Dim i
    Dim extObjs() As AcadEntity
    Dim fType(0 To 2) As Integer
    Dim fData(0 To 2) As Variant
    Dim dxfCode, dxfValue
        fType(0) = 0: fData(0) = "INSERT"
        fType(1) = 2: fData(1) = "`*U*," & blkname
        fType(2) = 100: fData(2) = "{ACAD_XDICTIONARY"
        dxfCode = fType: dxfValue = fData
    Dim oSset As AcadSelectionSet
    Dim ExtSset As AcadSelectionSet
    Dim oEnt As AcadEntity
    Dim oBlkRef As AcadBlockReference
    Dim oBlock As AcadBlock
    Dim oLayout As AcadLayout
    Dim bName As String
    Dim obj As AcadBlock
    Dim item As AcadEntity
    Dim Namelayot As String
        BlockFrameFound = False
        With ThisDrawing.SelectionSets
               While .Count > 0
                    .item(0).Delete
               Wend
          Set oSset = .Add("$BlockSset$")
          Set ExtSset = .Add("$BlockSsetExtracted$")
        End With
        
        oSset.Select acSelectionSetAll, , , dxfCode, dxfValue
        
        If oSset.Count = 0 Then
             BlockFrameFound = False
            Exit Function
           Else
        End If
   
        For Each oEnt In oSset
            Set oBlkRef = oEnt
            Set obj = ThisDrawing.ObjectIdToObject(oEnt.OwnerID)
            If Not obj Is Nothing And obj.IsLayout Then
                Set oLayout = obj.layout
            End If
         If oBlkRef.EffectiveName = blkname Then
            ReDim Preserve extObjs(i) As AcadEntity
            Set extObjs(i) = oBlkRef
            i = i + 1
         End If
        Next oEnt

        If Not IsNull(extObjs) Then
           ExtSset.AddItems (extObjs)
        End If

        If ExtSset.Count = 0 Then
            BlockFrameFound = False
            Exit Function
        End If
        Set objSpace = GetSpase
        If objSpace Is ThisDrawing.ModelSpace Then
          Namelayot = "Model"
            Else
          Namelayot = ThisDrawing.ActiveLayout.Name
        End If

    minExt = Empty
    maxExt = Empty
    For Each item In ExtSset
        Set obj = ThisDrawing.ObjectIdToObject(item.OwnerID)
        Set oLayout = obj.layout
        If oLayout.Name = Namelayot Then
             item.GetBoundingBox minExt, maxExt
               BlockFrameFound = True
              Exit For
        Else
          BlockFrameFound = False
          minExt = Empty
          maxExt = Empty
       End If
    Next item

Err_Control:
    If Err.Number <> 0 Then
    MsgBox Err.Description
    End If

End Function

Проблема  заключается в том что , при переносе на язык VB метод "ObjectIdToObject(item.OwnerID)" не поддерживается. Знаю что VB сам по себе устарел , но задача поставлена обратится к Акаду конкретно из VB (основная часть работающего приложения написана на нём).
Код под VB аналогичен. Кто нибудь сталкивался с такой проблемой? Есть ли какое нибудь ещё решение чтобы определить на каком именно листе вставлен блок с заданным именем?

Re: Как определить на каком именно листе вставлен блок

Private Sub FileAccess(FileName As String)
'обработка файла FileName
    'открыть файл FileName
    ThisDrawing.Application.Documents.Open (FileName)
'LN_Debug
'MsgBox FileName
    'обработать все Layouts файла
    Dim ps As IAcadPaperSpace
    Dim ly As IAcadLayout
    Dim lys As IAcadLayouts
     Dim psBlock As IAcadBlock
     
     Set lys = ThisDrawing.Layouts
     If lys Is Nothing Then
        Exit Sub
     End If
     
On Error Resume Next
     Dim i As Integer
     For i = (lys.Count - 1) To 0 Step -1
       Set ly = lys(i)
       If ly.ModelType = False Then
            'Set ps = ly.Block
            Err = 0
            Set psBlock = ly.Block
            Call ToPaperSpace(psBlock)
            
            If Err > 0 Then
                MsgBox Err.Description
            End If
       End If

     Next i
     
    'закрыть файл FileName
    ThisDrawing.Close
End Sub

Private Sub ToPaperSpace(psBlock As IAcadBlock)
'отбор блоков в "psBlock"
    If psBlock Is Nothing Then
        Exit Sub
     End If
     
'обработка очередного PaperSpace psBlock
    Dim layname As String
    Dim ent As AcadEntity
    Dim blk As AcadBlockReference
            
On Error Resume Next
    Dim i As Integer
    For i = (psBlock.Count - 1) To 0 Step -1
         Set ent = psBlock.Item(i)
         If TypeOf ent Is AcadBlockReference Then
             Set blk = ent
            If blk.HasAttributes Then
                'блок на обработку
                 Call BlockProcessing(blk)
            End If
        End If
    Next i
        
End Sub

Re: Как определить на каком именно листе вставлен блок

Спасибо!