如何在win32中作为变量运行vba宏

dfuffjeb  于 2021-07-14  发布在  Java
关注(0)|答案(1)|浏览(294)

我正在编写一个脚本,它打开一个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文件可能会改变。请帮帮我。

olhwl3o2

olhwl3o21#

简单的方法是使用

xl.Run(wb.Name+"!macro")

相关问题