0

似乎当使用 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 创建文件时,宏“消失”并且代码崩溃,因为当时宏“不存在”。

4

1 回答 1

0

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

于 2015-03-06T02:20:54.183 回答