Python vba extract to get bin of macro

Ari*_*iel 2 python excel vba

I am trying to add a vba_project to "Sheet1" of a workbook using python.

I am following XLSXWRITER documentation to get the bin of the VBA code from a different sheet which I would want to use in "Sheet1" of my new workbook.

I enter the below code in command prompt but I get the error: "'vba_extract.py' is not recognized as an internal or external command"

$ vba_extract.py Book1.xlsm
Extracted: vbaProject.bin
Run Code Online (Sandbox Code Playgroud)

Can someone give me a step by step on how to extract the macro from old file as bin and then input into sheet1 of new workbook using python?

Ste*_*ano 5

你必须告诉 cmd 你正在运行一个 python 文件。

试试这个批处理代码:

cd C:\path\of\yourfile.py
python vba_extract.py Book1.xlsm
Run Code Online (Sandbox Code Playgroud)

编辑:添加了 cd 命令,您必须位于 python 文件的文件夹中。


Noc*_*sol 5

我今天想出了这个,只是想把它留在这里供未来的任何人使用。这是令人难以置信的令人沮丧,不知道该怎么做。如果您使用的是 Pandas 库,这也是相关的。确保也安装 xlsxwriter。

1.单击Windows开始按钮并键入“cmd”并单击它以运行命令提示符。

2.打开后,需要找到vba_extract.py文件所在的位置。对我来说,它在这里:

C:\Users\yourusername\AppData\Local\Programs\Python\Python36-32\Scripts\vba_extract.py
Run Code Online (Sandbox Code Playgroud)

3.现在,您需要获取要从中获取的 .xlsm 文件的路径。如果您没有制作 .xlsm 文件。做一个。下面是一个例子:

C:\Users\yourusername\Desktop\excelfilename.xlsm
Run Code Online (Sandbox Code Playgroud)

4.现在,回到命令提示符。这正是您要键入的内容。您将从第 2 步和第 3 步中取出两个项目,然后组合并按 Enter。这里:

C:\Users\yourusername\AppData\Local\Programs\Python\Python36-32\Scripts\vba_extract.py C:\Users\yourusername\Desktop\excelfilename.xlsm
Run Code Online (Sandbox Code Playgroud)

如果成功,它会告诉你:

Extracted: vbaProject.bin
Run Code Online (Sandbox Code Playgroud)

5.对于这个我不确定。我假设无论您的 .xlsm 文件是 .bin 文件的最终位置。对于这个例子,它最终出现在我的桌面上。它将包含您在原始 .xlsm 文件中创建或拥有的所有宏。

C:\Users\yourusername\Desktop/vbaProject.bin
Run Code Online (Sandbox Code Playgroud)

这是在完整代码中使用的示例:

import pandas
import xlsxwriter

df_new = pd.read_csv('C:\\Users\\yourusername\\Desktop\\CSV1.csv')
writer = pd.ExcelWriter('C:\\Users\\yourusername\\Desktop\\CSV1.xlsx')
df_new.to_excel(writer, index = False, sheet_name = 'File Name', header = False)
pandaswb = writer.book
pandaswb.filename = 'C:\\Users\\yourusername\\Desktop\\newmacroexcelfile.xlsm')
pandaswb.add_vba_project(r'C:\Users\yourusername\Desktop/vbaProject.bin')
writer.save()
Run Code Online (Sandbox Code Playgroud)