在通过excel运行时,xlwings不会在file.xlsm中写入数据

我正在尝试使用xlwings从几个xls文件进行简单合并。 为此,我有一个all_files.xlsm文件,其中包含一个分配给它的macros的button。 这些macros如下所示:

Sub check_data() RunPython ("import python_code; python_code.consolidation()") End Sub 

在同一个文件夹中,我有一个文件python_code.py里面有“合并”function。 我也使用Workbook.set_mock_caller()为了有机会通过python接口运行代码。 看起来像:

 def consolidation(file_path): *** smth to get the data I need *** ... *** after I got data *** Range('A1').table.clear_contents() #string1 Range('A1').value = data #string2 def main(): consolidation(file_path) if __name__ == '__main__': xl.Workbook.set_mock_caller(path_to_file) main() 

问题是,当我通过excel文件中的button运行脚本的最后两个string(string1和string2) – 范围('A1')。table.clear_contents()和范围('A1')。value = data doesn'工作。 虽然其余的代码工作正常(但是,它也包含xlwing)。 而且,如果我使用set mock调用方法通过python接口来运行脚本,它就可以工作,包括string1和string2(在代码中标记)。

任何帮助和build议真的很感激!

我发现我的问题的决定。 在python中使用xlwings你应该在你的excel文件中导入xlwings.bas(见xlwings手册)。 事实certificate,在更新xlwings之前,我已经将这个macros导入了这个macros。 所以我删除这个文件并导入一个新的。 现在一切正常。