You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python复制目录最新文件 重命名带今日日期并执行Excel宏

功能实现完整方案

前置依赖

  • 需先安装Excel操作库:pip install pywin32

完整代码

import os
import datetime
import shutil
import win32com.client as win32

# 配置项,替换为你自己的实际路径和宏名
WORK_DIR = r"C:\Users\name\Desktop"
MACRO_NAME = "你要运行的宏的名称"
FILE_SUFFIX = " - Daily Item Record.xlsm"

# 1. 获取目录下最新修改的xlsm文件作为原文件
xlsm_files = [f for f in os.listdir(WORK_DIR) if f.endswith(".xlsm") and "Daily Item Record" in f]
if not xlsm_files:
    raise FileNotFoundError("目标目录下未找到符合规则的xlsm文件")
# 按修改时间倒序排序
xlsm_files.sort(key=lambda x: os.path.getmtime(os.path.join(WORK_DIR, x)), reverse=True)
original = os.path.join(WORK_DIR, xlsm_files[0])

# 2. 生成带当日日期的目标文件路径
today_str = datetime.datetime.today().strftime("%m.%d.%Y")
target = os.path.join(WORK_DIR, f"{today_str}{FILE_SUFFIX}")

# 3. 复制文件
shutil.copyfile(original, target)

# 4. 刷新PowerQuery并运行宏
excel = win32.Dispatch("Excel.Application")
excel.Visible = False  # 设为True可以看到Excel运行过程,方便调试
wb = excel.Workbooks.Open(target)
# 刷新所有数据连接(包含PowerQuery)
wb.RefreshAll()
excel.CalculateUntilAsyncQueriesDone()
# 运行宏
excel.Run(MACRO_NAME)
# 保存关闭
wb.Save()
wb.Close()
excel.Quit()
# 释放COM对象
del excel

配置说明

  • 路径替换:将WORK_DIR修改为你存放日报文件的实际文件夹路径即可,不需要手动指定具体文件名
  • 宏名替换:将MACRO_NAME替换为你Excel文件中实际要运行的宏的名称
  • 命名规则适配:如果后续文件名后缀有变化,修改FILE_SUFFIX即可适配

注意事项

  • 运行代码前请关闭所有正在编辑的Excel文件,避免COM调用冲突
  • 如果宏有运行权限限制,需要先在Excel信任中心启用宏运行权限

内容的提问来源于stack exchange,提问作者datoro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 14:09:01