【发布时间】:2020-01-19 17:49:16
【问题描述】:
我正在尝试从 Python 运行 vba 宏,但具有宏的 excel 文件已经打开。所以我不想作为另一个实例再次打开它。
我已经尝试过 win32com 代码 - 但是它会重新打开同一文件的另一个实例并在该实例中进行更改并要求我另存为第二个 excel 文件。但我想在已经打开的文件中调用宏。并在调用该宏后将excel文件保持打开状态。 这是 File 所在的路径 - 它是一个私有共享驱动器
\nplofnp0001a\gtonnnfs10912400\CPM Other\PL Estimate\PL Estimate Sheets\DAILY PL ESTIMATE W NRPD RV2 v6_YK_v2.xlsm
folder_xlfile = '\\\\nplofnp0001a\gtonnnfs10912400\CPM Other\PL Estimate\PL Estimate Sheets'
xlfile = '\\DAILY PL ESTIMATE W NRPD RV2 v6_YK_v2.xlsm'
Filename=folder_xlfile + xlfile
import win32com.client
xl=win32com.client.DispatchEx("Excel.Application")
#wb = xl.Workbooks.Open(Filename)
xl.Application.Run(Filename + "!Module2.CopySummaryData")
#xl.Application.Quit()
del xl
预期结果 - 在已打开的 excelfile 中运行 vba 函数。
实际结果 - 继续运行而没有错误消息。我猜代码挂了。
【问题讨论】:
-
您是否尝试过类似
xl = win32com.client.GetObject("Name_Of_Workbook")的方法,这应该可以让您获得相关工作簿的打开实例。 stackoverflow.com/questions/2876755/…