如何使用python更改VBA模块的名称
我试图以编程方式将多个VBA模块添加到.xlsm excel文件中。现在代码开始工作并添加模块,但它们被称为Module1、Module2、Module3 如何更改模块的名称?我很难找到pywin32的文档。我在网上找到的唯一线索不起作用如何使用python更改VBA模块的名称,python,excel,vba,pywin32,Python,Excel,Vba,Pywin32,我试图以编程方式将多个VBA模块添加到.xlsm excel文件中。现在代码开始工作并添加模块,但它们被称为Module1、Module2、Module3 如何更改模块的名称?我很难找到pywin32的文档。我在网上找到的唯一线索不起作用 # open the excel wb from file workbook = excel.Workbooks.Open(Filename=os.path.abspath(wb_path)) # remove old vba mod
# open the excel wb from file
workbook = excel.Workbooks.Open(Filename=os.path.abspath(wb_path))
# remove old vba modules
for i in workbook.VBProject.VBComponents:
excelModule = workbook.VBProject.VBComponents(i.Name)
if excelModule.Type in [1, 2, 3]:
workbook.VBProject.VBComponents.Remove(excelModule)
# loop through makros and attach all of them to the excel
for makroRoot, makrodirs, makrofiles in os.walk(wb_path + '.vba'):
for mfile in makrofiles:
# add Module
excelModule = workbook.VBProject.VBComponents.Add(1)
name = mfile.replace(".bas", "")
excelModule.Name = name #does not work
ppath = os.path.abspath(os.path.join(makroRoot, mfile))
excelModule.CodeModule.AddFromFile(ppath)
我得到以下错误
...
File "add-makros.py", line 35, in merge
excelModule.Name = name
File "C:\Python39\lib\site-packages\win32com\client\dynamic.py", line 549, in __setattr__
self._oleobj_.Invoke(entry.dispid, 0, invoke_type, 0, value)
pywintypes.com_error: (-2147352567, 'Ausnahmefehler aufgetreten.', (0, None, None, None, 0, -2146778156), None)
mfile.replace(“.bas”,”)
之后的name
变量的值是多少?如果它包含空格,则不允许您设置名称。谢谢您的快速回复!我要添加的makros在某个时候已经出口了。因此,名称应该是有效的。它们的值类似于AuxContent.bas AuxFunc.bas工作簿是否已经具有名为“相似”的模块?据我所知,导出模块不会将其从工作簿中删除。您可能正在添加一个名为的新模块,该模块已存在于工作簿中。感谢您的帮助,这确实是问题所在