使用Python创建工作簿时Excel宏不可用



当使用python创建工作簿时,宏似乎不可用。即使我关闭、重新启动并重新打开由python创建的文件,宏选项仍然缺失。然而,如果我手动创建excel文件,然后使用python代码打开手动创建的excel文件并运行宏,效果会很好。

提供了示例代码,但我可能在excel或计算机(政府计算机,尽管我有管理权限)上有不正确的设置。我已经在宏设置中启用了所有宏,查看了本网站上的可用文献,但仍然存在问题。

import win32com.client
xl = win32com.client.Dispatch("Excel.Application") 
xl.Visible = True 
wb = xl.Workbooks.Add()
ws = wb.Worksheets.Add()
cell = ws.Cells(1)
cell.Value = 'text'
wb.Close(True, r'c:AcousticAutomationTestFolderTestDatatest.xls')

当我手动打开"test.xls"时,宏部分中没有可用的宏;因此,我没有添加宏运行行,因为代码会崩溃。

如果我将txt文件转换/重命名为cvs文件,也会出现同样的问题,同样,当在excel中手动打开csv时,数据就在那里,但没有可用的宏选项:

os.rename('c:..file path...test.txt', 'c:..file path..test.csv')

但是,如果我手动创建文件并使用:

import win32com.client
xl = win32com.client.Dispatch("Excel.Application") 
xl.Visible = True 
wb = xl.WorkBooks.open(r'c:..test file path..test.xls’) 
xl.Run(‘DeleteTopRows')

宏已识别并且运行良好。因此,我尝试了创建工作簿的多种变体,但似乎每当使用python创建文件时,宏都会"消失",代码会崩溃,因为当时宏"不存在"。

我手动将excel中的宏导出为.bas文件。然后使用以下命令将宏导入到新打开的工作簿中:xl。VBE。ActiveVBProject。VB组件。导入('c:..path..\DeleteTopRows.bas')工作正常,感谢selllikesybok–Shea

最新更新