Сценарий: Я пытаюсь прочитать всю информацию или рабочий лист с помощью VBA (изначально Python, но я не мог найти способ сделать это).Поскольку листы, которые я должен читать, имеют разные форматы и обычно являются беспорядочными, я перебираю все объекты на листе, получая их имя и значение (проверено или нет, как двоичный файл).
Проблема: Ящики, как правило, не в порядке, поэтому я не знаю, в каком порядке.Поэтому я пытаюсь получить какую-то базовую форму местоположения или ссылку на ячейки вокруг него.
Что я пробовал: Следуя документации (https://docs.microsoft.com/en-us/office/vba/api/excel.oleobjects) Я пробовал все типыразличные свойства, но ни одно из них не может помочь с этой проблемой напрямую. Наиболее близким я был с BottomRightCell, но это только возвращает значение ячейки, тогда как мне нужно было бы местоположение или номер ячейки, поэтому я могу ссылаться на флажок правильно.*
Вопрос: Есть ли способ сделать такую идентификацию? Был бы лучший способ прочитать все содержимое листа (в том числе, если флажок установлен или нет) напрямую, илиэти две операции должны выполняться отдельно?
Код делать дальше:
Sub Test_retrieve()
' this will get all non object values from the sheet
Dim array_test As Variant
Dim i As Long, j As Long
array_test = ThisWorkbook.Sheets(1).UsedRange
For i = 1 To ThisWorkbook.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
For j = 1 To ThisWorkbook.Sheets(1).Cells(1, Columns.Count).End(xlToLeft).Column
ThisWorkbook.Sheets(2).Cells(i, j) = array_test(i, j)
Next j
Next i
End Sub
Sub getavticeboxvalue()
' this will get the names and values (as binary) of all the activex controlbox objects in the sheet
Dim objx As Object
Dim i As Long
i = 1
For Each objx In ThisWorkbook.Sheets(1).OLEObjects
If objx.Object.Value = True Then
ThisWorkbook.Sheets(3).Cells(i, 1).Value = 1
ThisWorkbook.Sheets(3).Cells(i, 2).Value = objx.Name
ThisWorkbook.Sheets(3).Cells(i, 3).Value = objx.Placement 'here is the issue
ElseIf objx.Object.Value = False Then
ThisWorkbook.Sheets(3).Cells(i, 1).Value = 0
ThisWorkbook.Sheets(3).Cells(i, 2).Value = objx.Name
ThisWorkbook.Sheets(3).Cells(i, 3).Value = objx.Placement 'here is the issue
End If
i = i + 1
Next objx
End Sub