我正在开发一个使用 win32com.client 模块与 SAP GUI 交互的 Python 脚本。我的目标是从 SAP 内的表中检索特定的单元格值。但是,当我尝试使用 getCellValue 方法时遇到错误。以下是回溯:
Traceback (most recent call last):
File "C:\Users\aaaa\Desktop\test.py", line 69, in <module>
value = shell.getCellValue(1, "Status do sistema")
File "<COMObject <unknown>>", line 2, in getCellValue
pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, 'SAP Frontend Server', '', None, 0, -2147024809), None)
这是我的代码的相关部分:
id = 'wnd[0]/usr/cntlCUSTOM/shellcont/shell/shellcont/shell'
shell = sap.session.findById(id)
value = shell.getCellValue(1, "Status do sistema")
print(value)
根据 SAP GUI 脚本 API 文档,getCellValue 方法在 VBScript 中具有以下签名:
Public Function GetCellValue( _
ByVal Row As Long, _
ByVal Column As String _
) As String
验证:确保在我的系统上启用 SAP GUI 脚本。 ID路径:仔细检查ID路径 (wnd[0]/usr/cntlCUSTOM/shellcont/shell/shellcont/shell) 以确保它 正确指向我想要与之交互的桌子。
列参考:尝试使用列名称(“Status do sistema")和列索引(例如 0、1)来检索值。
测试不同的参数:我还尝试了不同的行 索引和列名来查看问题是否特定于某些 细胞。
我希望 getCellValue 方法返回表中指定单元格的值,然后将其打印到控制台。
Python版本:3.11.8
SAP GUI 版本:(SAP GUI 版本 770)
win32com.client 版本:306
操作系统:Windows 10
当我尝试使用 getCellValue 时,可能是什么原因导致此 pywintypes.com_error ?我引用该列的方式是否有问题,或者 SAP GUI 设置是否存在问题?我将不胜感激有关如何正确检索单元格值的任何指导。
此错误可能因 SAP GUI 脚本的任何误用而发生,并且并非特定于 Python 或 win32com.client 模块。
例如,在您的情况下,您错误地指定了
GetCellValue
的第二个参数,它必须是列名称,而不是列标题:
value = shell.getCellValue(1, "Status do sistema")
如何获取列名在这个answer中有详细介绍。