我正在使用以下代码将宏添加到Excel。我注意到原始Excel中的数据/其他WorkSheets已完全丢失,但宏正在显示。
这是我正在使用的代码:
import xlsxwriter
workbooks = xlsxwriter.Workbook('C:\\Users\\user\Desktop\\test.xlsm')
workbooks.add_vba_project('C:\\Users\\user\\Desktop\\vbaProject.bin')
workbooks.close()
我使用了链接http://xlsxwriter.readthedocs.io/example_macros.html,它似乎与另一页https://redoakstrategic.com/pythonexcelmacro/
相同我想知道我是否应该使用另一个库?
我尝试了以下链接Use Python to Inject Macros into Spreadsheets,似乎再次覆盖了原始文件中的数据。不确定这是否重复,或者我错过了一些相当明显的东西?
由于
答案 0 :(得分:1)
不幸的是,xlsxwriter无法从现有的Excel工作簿加载信息;它仅用于制作新的。您正在使用包含宏的空白工作簿覆盖旧工作簿。
如果您需要加载信息,请查看openpyxl。它可以用于创建.xlsm文件。
答案 1 :(得分:0)
一种方法是在另一个Excel中创建所需的宏,以便我们可以执行它以影响其他Excel。然后使用win32.com运行VBA。
enter code here
#import win32com.client
#xl=win32com.client.Dispatch("Excel.Application")
#xl.Workbooks.Open(Filename="C:\\macro.xlsm",ReadOnly=1)
#xl.Application.Run("macro")
#xl = 0