我正在编写一个脚本,它打开一个excel工作表,输入一些数据并运行vba宏。
import os
import win32com.client
import glob
xl=win32com.client.Dispatch("Excel.Application")
working_dir = os.getcwd()
path = os.path.join(working_dir, 'folder')
file_list = glob.glob(path + '/*.xls*')
for file in file_list:
file_name = str(file)
wb = xl.Workbooks.Open(file_name)
wb.Worksheets("sheet1").Activate()
ws = wb.Activesheet.Name
ws1 = wb.Worksheets(ws)
ws1.Range("E5").FormulaR1C1 = "add_text_here"
xl.Goto(ws1.Range('E5'))
xl.Run("excel_sheet.xls!macro")
wb.Close(SaveChanges=True)
xl.Quit()
我可以正常运行这个脚本。我遇到的问题是,当我将run宏更改为从如下所示的变量读取时。
xl.Run(file_name+"!macro") # here I changed file name to a variable
我明白了
宏可能在此工作簿中不可用,或者可能已禁用所有宏。“,'xlmain11.chm',0,-2146827284),无)
错误。
我真的需要这样做,因为我不想给excel文件名硬编码,这个excel文件可能会改变。请帮帮我。
1条答案
按热度按时间olhwl3o21#
简单的方法是使用