首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我不能使用任务计划程序自动刷新excel工作表。

我不能使用任务计划程序自动刷新excel工作表。
EN

Stack Overflow用户
提问于 2021-11-30 16:11:52
回答 1查看 33关注 0票数 0

我有一个python脚本,可以将值从一个excel粘贴到另一个excel中,叫做'Automate‘。我已经将值粘贴到Automate的工作表1中的特定单元格,以便Automate中的工作表2可以读取这些值并应用公式。在Automate中,我有一个宏可在保存之前将工作表2中的值上载到SQL。我使用openpyxl来处理excel,函数wb.save(Automate.xlsxm)不运行宏。

我能够运行下面的代码来刷新Q并保存Automate,它运行宏将值上载到SQL。但是,我必须手动运行脚本,并且当我使用任务调度程序运行脚本时,值不会从Automate上载到SQL。

代码语言:javascript
复制
import win32com.client                                                                                     
                                                                                                           
xlapp = win32com.client.gencache.EnsureDispatch("Excel.Application")                                       
wb = xlapp.Workbooks.Open('Automate.xlsm')             
wb.RefreshAll()                                                                                            
xlapp.CalculateUntilAsyncQueriesDone()                                                                     
wb.Save()                                                                                                  
wb.Close()                                                                                                 
wb = None                                                                                                  
xlapp.Quit()                                                                                               
xlapp = None 

我们将非常感谢您的帮助

EN

回答 1

Stack Overflow用户

发布于 2021-11-30 19:16:18

Openpyxl不计算excel公式和宏,因为它实际上不使用excel,也没有内置的功能。取而代之的是,我建议使用xlwing,它可以打开excel并在打开时计算所有公式(如果它们被设置为自动重新计算)。你也可以使用xlwing来运行你的宏,比如here。您的代码的大致轮廓将是:

代码语言:javascript
复制
import openpyxl as op
import xlwings as xw

# Openpyxl open and write
wb_path = "Your_workbook.xlsm"
wb = op.load_workbook(wb_path)
ws = wb["Sheet1"]

# Write your values etc

# Save
wb.save(wb_path)
wb.close()

# Open with xlwings
wb = xw.Book(wb_path)
app = xw.apps.active

# Run macro
macro = wb.macro("YourMacro")
macro()

# Save, close
wb.save(wb_path)
app.quit()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70172496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档