0

複数の 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 (コードでマークされている) を含めて問題なく動作します。

どんな助けやアドバイスも本当に感謝しています!

4

1 に答える 1

1

私の問題に対する決定を見つけました。Python で xlwings を使用するには、Excel ファイルに xlwings.bas をインポートする必要があります (xlwings のマニュアルを参照してください)。xlwings を更新する前に、このマクロ用にインポートしたことがわかりました。そのため、このファイルを削除して、新しいファイルをインポートしました。すべてが正常に動作するようになりました。

于 2015-12-12T23:57:06.307 に答える