Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python更改VBA模块的名称_Python_Excel_Vba_Pywin32 - Fatal编程技术网

如何使用python更改VBA模块的名称

如何使用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

我试图以编程方式将多个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 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工作簿是否已经具有名为“相似”的模块?据我所知,导出模块不会将其从工作簿中删除。您可能正在添加一个名为的新模块,该模块已存在于工作簿中。感谢您的帮助,这确实是问题所在