2012-09-26 113 views
0

似乎在使用python創建工作簿時,宏不可用。即使我關閉,重新啓動,然後重新打開由python創建的文件,宏選項仍然缺失。但是,如果我手動創建excel文件,然後使用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數據在那裏的時候,卻沒有宏選項avaialble:

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

什麼版本的Excel使用?另外,一般來說,.txt和.csv不能正確支持MS Excel宏。當然,不管文件名如何,如果文件內容格式正確,Excel可能會讀取/處理它。但沒有保證。 – selllikesybok

+0

Using 2007.即使我使用python打開一個空白工作簿,將其關閉,然後手動打開該工作簿,這些宏不在那裏。似乎每當創建工作簿/文件時宏都消失了。在宏運行在python後,我還沒有嘗試保存手動創建的工作簿。我很好奇,如果該保存的文件中的宏也不再可用。 – Shea

+0

如果你創建一個空白的工作簿,你爲什麼期望它有宏? – selllikesybok

回答

0

我手動將excel中的宏導出爲.bas文件。然後使用以下命令將宏導入到新開的工作簿:xl.VBE.ActiveVBProject.VBComponents.Import(「C:..路徑.. \ DeleteTopRows.bas」)的工作,感謝selllikesybok - Shea

+0

答案在評論。任何在搜索中發現此主題的人都會看到有答案,並且更有可能尋找有希望的有用答案。 – niton

相關問題