如何使用 win32com python 创建和编辑时间线切片器?

How to create and edit timeline slicer using win32com python?

我正在尝试使用 win32com python 创建时间线切片器。我目前正在使用 win32com 来操作 excel 数据,但在数据中,我的客户希望我将时间线切片器的上限和下限设置为某个月份。我在谷歌上搜索了很多,我得出的结论是,我能做到的唯一方法是在 VBA 中编码并在 python 中实现它,例如 here。我没有 VBA 方面的经验,我想知道是否有办法使用 win32com python 而不是 VBA win32com python.

编辑:

在 Excel 中使用“分配宏”后,这是关于我的时间切片器的代码:

ActiveWorkbook.SlicerCaches("NativeTimeline_Goods_Receipt_Date").TimelineState. _
        SetFilterDateRange "01/01/2020", "30/04/2020"

现在我需要将其更改为 python 并将开始日期和结束日期分配给变量。到目前为止我有这个:

from win32com.client import Dispatch
excel = win32.gencache.EnsureDispatch('Excel.Application')
test_wb = excel.Workbooks.Open(test_file)
date_sl = test_wb.SlicerCaches("NativeTimeline_Goods_Receipt_Date")

显然在 Excel 中,有一个程序可以记录你点击的任何内容,所以如果你想操作 filter/slicer,你可以右键单击该元素,然后选择“分配”宏”。然后你可以点击离开,因为它会记录你的点击。完成后,您可以通过再次选择“分配宏”来查看它,弹出窗口 window 将可用,您可以选择您的_filter/slicer_name_Click,它将为您提供 VBA代码。您所要做的就是更改它,使其适合 python 格式。

将 VBA 转换为 python 代码的更新答案:

通过参考 this link,我能够将 VBA 转换为 python 代码并根据您选择的日期调整日期。

所以 VBA 代码是这样的:

ActiveWorkbook.SlicerCaches("NativeTimeline_Goods_Receipt_Date").TimelineState. _
        SetFilterDateRange "01/01/2020", "30/04/2020"

它的 python 版本是:

excel = win32.gencache.EnsureDispatch('Excel.Application')
excel.DisplayAlerts = False
excel.Visible = True
test_wb = excel.Workbooks.Open(test_file, None, False)
date_sl = test_wb.SlicerCaches("NativeTimeline_Goods_Receipt_Date")
date_sl.TimelineState.SetFilterDateRange("01/01/2020", "30/04/2020")

在我的例子中,我需要根据 运行 代码等更改日期设置,这样我就可以将日期分配给变量并用它替换硬编码日期。