首页 > 解决方案 > 如何使用win32实现类似VBA的“Range.Find”?

问题描述

我希望使用 Python 中的 win32com 包来实现类似于VBA 中 Range.Find 方法的功能。我正在处理一个 Excel CSV 文件。虽然我找到了很多使用 的解决方案range(),但它似乎需要指定一个固定的单元格范围,而不是Range.Find在 VBA 中,它会在工作表中自动搜索而不固定范围。

这是我的代码:

import win32com.client as client

excel= client.dynamic.Dispatch("Excel.Application")
excel.visible= True

wb= excel.workbooks.open(r"ExcelFile.xls")
ws= wb.worksheets('First')

### This able to extract information:
test_range= ws.Range("A1") 
### Got issue AttributeError: 'function' object has no attribute 'Find':
test_range= ws.Range.Find("Series ID") 
print(test_range.value)

这是否意味着Range.Findwin32 包中不支持方法或者我用错误的现有模块指向它?

标签: pythonexcel

解决方案


奖励答案:如果您是 Excel API 的粉丝(@ashleedawg 评论的 10 倍),您可以通过 xlwings 直接使用它:

import xlwings as xw

bookName = r'C:\somePath\hello.xlsx'
sheetName = 'Sheet1'

wb = xw.Book(bookName)
sht = wb.sheets[sheetName]

myCell = wb.sheets[sheetName].api.UsedRange.Find('test')
print('---------------')
print (myCell.address)
input()

因此像这样的输入:

在此处输入图像描述

很好地返回这个:

在此处输入图像描述


推荐阅读