複数の xls ファイルからの単純な統合に xlwings を使用しようとしています。このために、マクロが割り当てられたボタンを含む all_files.xlsm ファイルがあります。マクロは次のようになります。
Sub check_data()
RunPython ("import python_code; python_code.consolidation()")
End Sub
同じフォルダーに、関数「統合」を含むファイル python_code.py があります。Python インターフェイスを介してコードを実行する機会を得るために、 Workbook.set_mock_caller() も使用します。次のようになります。
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 ファイルの最後の 2 つの文字列 (string1 と string2) のボタンからスクリプトを実行しているときに、Range('A1').table.clear_contents() と Range('A1').value = data doesn' ということです。動作しません。コードの残りの部分は問題なく動作しますが (ただし、xlwing も含まれています)。さらに、set mock caller を使用して Python インターフェイスからスクリプトを実行すると、string1 と string2 (コードでマークされている) を含めて問題なく動作します。
どんな助けやアドバイスも本当に感謝しています!