我正在运行 TIBCO Spotfire v4。它内置了 IronPython。希望运行一个 Spotfire 报告来导出 .xls 文件(该部分已完成)。寻找一个脚本来打开 Excel 文件并运行宏以便能够格式化该文件。
这是我找到并尝试使用的一些代码。不知道进口物品是从哪里来的!
import os, os.path, win32com.client
def run_macro(fName, macName, path=os.getcwd()):
"""
pre: fName is the name a valid Excel file with macro macName
post: fName!macName is run, fName saved and closed
"""
fName = os.path.join(path, fName)
xlApp = win32com.client.Dispatch("Excel.Application")
fTest = xlApp.Workbooks.Open(fName)
macName = fTest.Name + '!' + macName xlApp.Run(macName)
fTest.Close(1)
xlApp.Quit()
xlApp = None
编辑器 - 代码看起来来自无法从 Python 迭代 VBA 宏 https://stackoverflow.com/questions/13941540/cannot-iterate-vba-macros-from-python.
我遇到了类似的问题(尝试从 ipy 运行 Excel VBA 宏),并最终让它工作。
试试这个代码:
# .net access
import clr
clr.AddReference("Microsoft.Office.Interop.Excel")
# opening the workbook
excel = Excel.ApplicationClass()
excel.Visible = True
workbook = excel.Workbooks.Open(r"C:\your\file\here.xls")
# or open locally:
# workbook = ex.Workbooks.Open('here.xls')
# running the macro
excel.Run('YOUR-MACRO-NAME')
# closing down
excel.Quit()
第一部分是使用 .NET ,第二部分是实际执行宏。请注意,这是从未打开的 Excel 文件运行 Excel 代码。如果您想从已经打开的文件运行宏(我也必须这样做,所以我想我也可以把它放在这里),您需要将其识别为活动对象而不是打开它(请参阅以下)。运行宏的代码仍然与上面相同。
# recognizing an already opened window
from System.Runtime.InteropServices import Marshal
excel = Marshal.GetActiveObject("Excel.Application")
当我寻找解决方案时,此链接非常有用:
http://www.ironpython.info/index.php?title=Interacting_with_Excel http://www.ironpython.info/index.php?title=Interacting_with_Excel
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)