2015-01-06 8 views
8

Wywołuję python z programu Excel przy użyciu xlwings. Podczas uruchamiania makra program Excel zamyka się i ponownie otwiera, aby uruchomić kod. Działa poprawnie, ale spowalnia działanie. Ponadto, jeśli plik programu Excel nie jest zapisany, w oknie dialogowym pojawi się informacja, że ​​plik jest już otwarty i że utracię niezapisane zmiany.Czy istnieje sposób wywołania Pythona z Xlwings bez ponownego otwierania pliku Excel?

Czy istnieje sposób wywołania Pythona bez ponownego otwierania pliku Excel?

To jest mój kod python (w loaddf.py):

from xlwings import Workbook, Range, Sheet 

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

I kod VBA w moim pliku Excel:

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

Dzięki za pomoc.

+0

To oczywiście nie jest zamierzone zachowanie - czy masz do czynienia z tym błędem? https://github.com/ZoomerAnalytics/xlwings/issues/10 –

+0

Mając ten sam problem. Python 3.4 i Excel 2013 15.0.4675.1001 –

+0

@ JoeMcGrath Którą dystrybucję Pythona używasz? xlwings w wersji 0.3.0? Excel 32 lub 64bit? –

Odpowiedz

5

Wygląda na to, że w pewnych okolicznościach program Excel nie rejestruje prawidłowo skoroszytu programu Excel w wersji RunningObjectTable, co jest warunkiem wstępnym, który można znaleźć za pośrednictwem modelu COM. Do tej pory zauważyłem to zachowanie tylko dla skoroszytów pobranych z Internetu, ponieważ najpierw otwiera je w trybie Protected View (zależy od ustawień). Jednak w oparciu o opinie tutaj, wydaje się, że może się to również zdarzyć w innych okolicznościach, prawdopodobnie spowodowanych przez niektóre dodatki lub ustawienia zabezpieczeń.

Wprowadziłem poprawkę do tego, która będzie obecna w , ale możesz ją teraz pobrać bezpośrednio z GitHub. Daj mi znać, jeśli potrzebujesz pomocy.

Aktualizacja (16-Jan-2015): xlwings v0.3.1 tym tej poprawki została właśnie wydana.

Update2 (13 września 2015): xlwings v0.4.0 powinien w końcu naprawić ten błąd w niezawodny sposób.

+0

Dzięki. Cieszę się, że nagrodę przyznano automatycznie. Problem z bezpieczeństwem może być spowodowany przez to, że znajduje się na dysku podłączonym do sieci? –

+0

Tak, to by miało wiele sensu ... czy plik jest otwierany w "Widoku chronionym" za każdym razem, gdy go otwierasz? –

+0

nrWłaśnie dlatego byłem zmieszany z twoją początkową sugestią. Zaktualizowałem do najnowszej wersji i bez problemów. Nie miałem czasu go użyć, ale zweryfikowałem, że działa poprawnie. –

Powiązane problemy