我有一个用VBA,Excel编写的长脚本。我正在使用Python创建另一个Excel文件,我希望将脚本嵌入到该文件中。我可以在Excel中添加一个宏作为“Module1”,但不能作为与特定工作表关联的“microsoftexcel对象”。它必须与一个命名的工作表相关联,因为当您单击输入单元格时,它会突出显示特定的单元格。在
我提取了vbaProject.bin与我要添加到的Excel文件所在的文件夹中。我还记得在Excel中设置正确的权限(文件->选项->信任中心->信任中心设置->宏设置->信任对VBA项目对象模型的访问权限)。在
我刚刚生成了一个名为输出.xlsm它在启动此代码之前打开时没有问题,不包含VBA,并且有多个工作表。在
我希望这是清楚的-我是一个新手,这是我的第一个问题。在import os
import win32com.client
mydir = os.getcwd()
with open ('vbaProject.bin', 'rb') as myfile:
print('Reading macro into string from vbaProject.bin')
macro = myfile.read()
excel = win32com.client.Dispatch('Excel.Application')
excel.Visible = False
workbook = excel.Workbooks.Open(Filename = mydir + '/output.xlsm')
excelModule = workbook.VBProject.VBComponents.Add(1)
excelModule.CodeModule.AddFromString(macro)
excel.Workbooks(1).Close(SaveChanges = 1)
excel.Application.Quit()
del excel
此代码添加“Module1”,而不是Microsoft Excel对象。在
另外,当我试图关闭新的Excel文件时,添加为“Module1”的宏的格式不正确。这是一些令人目瞪口呆的人物,而不是一个冗长的剧本。在
谢谢你的帮助。在