Ich habe mehrere Threads gelesen und festgestellt, dass ich Python von VBA mit Shell aufrufen kann. DieseVBA - Aufruf Python-Skript
ist, was ich habe:
Private Sub CommandButton1_Click()
Ret_Val = Shell("C:\Users\....\Anaconda3\python.exe C:\Users\...\REL.py", vbNormalFocus)
If Ret_Val <> 0 Then
MsgBox "ok!", vbOKOnly
End If
End Sub
ich tun, um die OK-Meldung erhalten, und ein Fenster öffnen und schließen sich innerhalb einer Sekunde. Ich denke also, es startet Python, aber das Skript funktioniert nicht.
Also dachte ich, dass vielleicht nicht funktioniert, weil ich den Code in spyder schrieb und ich könnte starten müssen spyder:
Ret_Val = Shell("C:\Users\...\Anaconda3\Scripts\spyder.exe C:\Users\...\REL.py", vbNormalFocus)
Dies wird Spyder öffnen, die zu viel Zeit in Anspruch nimmt, und es ist nicht das, was ich wollen. Auch wenn es geöffnet wird, startet es das Skript nicht.
Etwas stimmt nicht, aber ich bin mir nicht sicher, ob dies auf den VBA-Code oder etwas anderes im Zusammenhang mit dem Skript zurückzuführen ist. Das Skript funktioniert, wenn ich es ohne VBA von Spyder aus starte.
Dies ist ein einfaches Beispiel für die Python-Code:
# -*- coding: utf-8 -*-
"""
Created on Fri Apr 21 08:24:05 2017
@author: xxxxxx
"""
import pandas as pd
import numpy as np
import datetime
RW = pd.read_excel('Raw_data.xlsx', skipinitialspace=True)
RW=pd.DataFrame(RW, columns = ['Task Id', 'TIDmodRW', 'Start Date', 'End Date', 'Machine', 'Boards'])
writerRW = pd.ExcelWriter('RW_test2.xlsx', engine='xlsxwriter')
RW.to_excel(writerRW, sheet_name='sheet1')
writerRW.save()
Warum geben Sie kein Python-Beispielskript, um dies zu einem [mcve] zu machen? –
Ich habe es in der Frage hinzugefügt. Ich schneide es, um es einfach zu halten, aber es schreibt nicht das Excel. Der Code funktioniert mit Spyder – Filippo
Vielleicht können Sie dem Python-Skript eine Fehlerbehandlung hinzufügen, bei der der Fehlerhandler die Ausnahme druckt und eine 'input (" Drücken Sie eine beliebige Taste zum Schließen ")', so dass Sie das Ergebnis vor dem Fenster anzeigen können schließt. Können Sie durch sinnvolle Verwendung von 'print()' die Zeile im Python-Code identifizieren, die den Fehler verursacht? –