8

xlwings を使用して Excel から python を呼び出しています。マクロを実行すると、コードを実行するために Excel が閉じて再度開くことがわかりました。正しく機能しますが、速度が低下します。さらに、Excel ファイルが保存されていない場合、ファイルが既に開かれており、保存されていない変更が失われることがダイアログに表示されます。

Excelファイルを再度開かずにpythonを呼び出す方法はありますか?

これは私のpythonコードです(loaddf.py内):

from xlwings import Workbook, Range, Sheet

def my_macro():
    wb = Workbook.caller()
    Range('A1').value = Range('A1').value + 1

そして、私のExcelファイルのVBAコード:

Sub loaddfsub()
    RunPython ("import loaddf; loaddf.my_macro()")
End Sub

助けてくれてありがとう。

4

1 に答える 1

5

特定の状況下で、Excel が Excel ワークブックを に正しく登録していないRunningObjectTableようで、前提条件として、COM 経由で見つけることができます。これまでのところ、インターネットからダウンロードしたワークブックがProtected View最初にモードで開かれた場合にのみ、この動作に気付きました (設定によって異なります)。ただし、ここでのフィードバックに基づくと、アドインやセキュリティ設定が原因で、他の状況でも発生する可能性があるようです。

私はこれに対する修正を実装しました。この修正は に含まれv0.3.1ますが、今すぐGitHubから直接入手できます。そこで助けが必要な場合はお知らせください。

更新(2015 年 1 月 16 日): この修正を含む xlwings v0.3.1 がリリースされました。

Update2 (2015 年 9 月 13 日): xlwings v0.4.0 では、最終的にこのバグを確実な方法で修正する必要があります。

于 2015-01-14T23:47:08.020 に答える