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

2024-10-02 20:38:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图以编程方式将多个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)

Tags: 模块pathnameinnoneforosexcel