我正在尝试刷新由XLWINGS写入的数据的数据透视表。 由于我不知道如何直接从XLWINGS进行,我尝试使用VBA。
让我们分两个步骤分割我的过程:
步骤1
我从vba启动python代码(我的模块名称是“PosRep”,python代码通过xlwings写回指定表单中的一系列数据。
Sub launchPython()
RunPython ("import PosRep; PosRep")
End Sub
第2步
但由于我事先并不知道我在Excel中新创建的Range的大小,我想选择它,添加一个新的Name(NamedRange)并刷新我的pivot(已经链接到NamedRange)。
Sub SelectRange()
Worksheets("GPODump").Range("A1").Select
'...
End Sub
两个子公司都独立工作。但我无法让它们以原始方式工作。以下代码:
Sub Main()
launchPython
SelectRange
End Sub
在语句上生成VBA错误“Range类失败的方法”:
Worksheets("GPODump").Range("A1").Select
我认为与XLWINGS VBA模块存在冲突,但我无法弄清楚它是什么...... 任何人的帮助都非常受欢迎! THX
答案 0 :(得分:1)
问题来自VBA代码。以下代码工作正常:
Sheets("GPODump").Select
Sheets("GPODump").Range("A1").Select
答案 1 :(得分:0)
也许为时已晚,但是您可以在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()
答案 2 :(得分:0)
我一直在寻找如何在Mac上解决此问题的方法,这是刷新所有数据透视表等的方法:
wb.api.active_sheet.refresh_all(wb.api)
希望这可以节省其他人的时间。花了我一段时间才弄清楚。