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

时间:2012-09-26 15:47:57

标签: 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:\AcousticAutomation\TestFolder\TestData\test.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创建文件,宏都会“消失”,并且当时宏“不存在”时代码崩溃。

1 个答案:

答案 0 :(得分:0)

我手动将excel中的宏导出为.bas文件。然后使用以下命令将宏导入新打开的工作簿:xl.VBE.ActiveVBProject.VBComponents.Import('c:.. path .. \ DeleteTopRows.bas')工作,感谢selllikesybok - Shea < / p>