4

我正在尝试根据 XLWINGS 写入的数据刷新 excel 中的数据透视表。由于我不知道如何直接从 XLWINGS 执行此操作,因此我尝试使用 VBA。

让我们将我的过程分为两个步骤:

步骤1

我从 vba 启动 python 代码(我的模块名称是“PosRep”,由于 xlwings,python 代码在指定的工作表中写回了一系列数据。

Sub launchPython()
RunPython ("import PosRep; PosRep")
End Sub

第2步

但是由于我事先不知道我在 Excel 中新创建的 Range 的大小,所以我想选择它,添加一个新名称 (NamedRange) 并刷新我的数据透视表(已经链接到 NamedRange)。

Sub SelectRange()
Worksheets("GPODump").Range("A1").Select
'...
End Sub

两个 Subs 独立工作良好。但我无法设法让它们原始工作。以下代码:

Sub Main()
launchPython
SelectRange
End Sub

在语句中产生 VBA 错误“范围类的选择方法失败”:

Worksheets("GPODump").Range("A1").Select

我认为与 XLWINGS VBA 模块存在冲突,但我无法弄清楚它可能是什么......任何人的帮助都会非常受欢迎!谢谢

4

3 回答 3

1

问题来自 VBA 代码。以下代码工作正常:

Sheets("GPODump").Select
Sheets("GPODump").Range("A1").Select
于 2014-12-03T11:53:00.530 回答
1

我正在寻找如何为 Mac 解决这个问题,这是我刷新所有数据透视表等的方法:

wb.api.active_sheet.refresh_all(wb.api)

希望这可以节省别人的时间。我花了一段时间才弄清楚。

于 2020-11-24T08:33:58.940 回答
1

也许为时已晚,但您可以在 xlwings 内完成 - 这对我有用:

import xlwings as xw
# open excel App
app_excel = xw.App(visible = False)
# open the excel file, select the tab and the PivotTable to refresh
wbook = xw.Book( 'YourFile.xlsx' )
wbook.sheets['Tab1'].select()
wbook.api.ActiveSheet.PivotTables('PivotTableName').PivotCache().refresh()
于 2019-01-09T22:54:54.927 回答