gpt4 book ai didi

excel - xlsxwriter 在 "thisworkbook"添加一个宏以在打开时执行

转载 作者:行者123 更新时间:2023-12-04 22:22:58 25 4
gpt4 key购买 nike

我已经从代码在 Thisworkbook 中的 XMLS 中提取了 bin 文件,因为我需要在打开文件时运行宏
我无法使用以下代码创建在打开时执行代码的 XLSM:创建的 XLSM 具有“Thisworkbook”和“Thisworkbook1”,并且代码在打开时未运行

import xlsxwriter


strn =" Feb "
## Region Level

Loc = Location.reset_index()


for n, g in Matrix.groupby('Cluster'):

out_path = "D:/Actions/Results/Action-Opp " + n.strip(" ") + strn + ".xlsx"
writer = pd.ExcelWriter(out_path , engine='xlsxwriter')

C =Loc[Loc.Cluster==n].iloc[:,1:]
B =SPs[SPs.Cluster==n]
D = PDet[PDet.Cluster==n]
F = OppD[OppD.Cluster==n]

Total.iloc[:,:-2].to_excel(writer, sheet_name="Region", index=True)
C.to_excel(writer, sheet_name="Stores", index=False)
B.to_excel(writer, sheet_name="SPs", index=False)
D.to_excel(writer, sheet_name="Portfolio Details", index=False)

F.to_excel(writer, sheet_name="Opportunity Details", index=False)

workbook = writer.book
workbook.filename = "D:/Actions/Results/Action-Opp " + n.strip(" ") + strn + ".xlsm"
worksheet1 = writer.sheets['Region']
worksheet2 = writer.sheets['Stores']
worksheet3 = writer.sheets['SPs']
workbook.set_vba_name('Stores')
workbook.add_vba_project('D:/Actions/vbaProject.bin')

writer.save()


elapsed = timeit.default_timer() - start_time
print(elapsed)

最佳答案

这是创建一个 xlsm 文件的方法,该文件将包含一个宏,该宏将在您每次打开工作簿时自动运行(只要文件的文件夹设置为受信任的位置):

1)创建一个excel文件,插入一个新模块并输入这个vba代码:

Sub Auto_Open()
MsgBox "Hello World!"
End Sub

将文件另存为 xlsm。

2) 使用 xlsxwriter 的 vba_extract.py 实用程序提取 vba 代码。

3)运行以下python脚本:
import xlsxwriter

# Create a workbook and add a worksheet.
workbook = xlsxwriter.Workbook('test.xlsx')
workbook.filename = 'test.xlsm'
worksheet = workbook.add_worksheet()

# Inject the bin file we extracted earlier
workbook.add_vba_project('./vbaProject.bin')

# Finally write the file
workbook.close()

这将创建一个文件,其中注入(inject)了宏,并在您每次打开它时自动运行。

输出:
enter image description here

如果您仍然遇到问题,我建议您检查两件事:首先,如果您的宏以关键字 Sub Auto_Open() 开头其次,如果您已将打开文件的文件夹设置为受信任位置(因为默认情况下,办公应用程序将阻止任何宏运行,以防它们包含恶意代码)。

关于excel - xlsxwriter 在 "thisworkbook"添加一个宏以在打开时执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60741822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com