Я считаю, что безопаснее всего это использовать свойство API
и просто использовать метод VBA
Range.Find
. Теперь мы можем искать что-нибудь, используя подстановочный знак *
, чтобы убедиться, что вы найдете формулы (которые могут показывать ""
) И значения. Упрощенный пример:
import xlwings as xw
app = xw.App(visible=False, add_book=False)
wb = app.books.add()
ws = wb.sheets.active
ws['C2'].value = 'check'
row_cell = ws.api.Cells.Find(What="*", After=ws.api.Cells(ws.api.Rows.Count, ws.api.Columns.Count), LookAt=xw.constants.LookAt.xlPart, LookIn=xw.constants.FindLookIn.xlFormulas, SearchOrder=xw.constants.SearchOrder.xlByRows, SearchDirection=xw.constants.SearchDirection.xlNext, MatchCase=False)
column_cell = ws.api.Cells.Find(What="*", After=ws.api.Cells(ws.api.Rows.Count, ws.api.Columns.Count), LookAt=xw.constants.LookAt.xlPart, LookIn=xw.constants.FindLookIn.xlFormulas, SearchOrder=xw.constants.SearchOrder.xlByColumns, SearchDirection=xw.constants.SearchDirection.xlNext, MatchCase=False)
print((row_cell.Row, column_cell.Column))
Мы можем использовать SearchDirection.xlNext
и начать с самой последней Excel
ячейки. Это рекомендуемый способ в VBA
для надежного поиска вашей последней использованной строки / столбца, но также может надежно найти вашу первую строку / столбец.