läuft Ich bin mit Python 3.6.2 auf Windows 7.Python/win32com/versuchen und außer/überprüfen, ob Anwendung
ich eine kleine Funktion haben, prüfen Sie, ob sollten, wenn MS Excel bereits ist oder nicht ausgeführt wird. Die Funktion verhält sich ein wenig seltsam, hier würde Ihre Hilfe sehr geschätzt werden.
Die Funktion sollte prüfen, ob Excel läuft. Wenn ja, drucken Sie den Text und beenden Sie die Anwendung. Wenn nein, ist alles in Ordnung, weiter.
jetzt Mein Problem ist, wenn Excel der Try-Block ausgeführt wird, einschließlich dem Druck ausgeführt wird, aber nicht die sys.exit() UND die außer-Block als auch ausgeführt wird !? Wenn Excel NICHT läuft, dann ist alles in Ordnung, der Try-Block bricht ab und nur der except-Block wird ausgeführt.
Warum werden beide print-Anweisungen ausgeführt, wenn Excel ausgeführt wird?
Bitte helfen!
Hier ist mein Code:
def check_if_Excel_runs():
import win32com.client
import sys
try:
win32com.client.GetActiveObject("Excel.Application")
# If there is NO error at this stage, Excel is already running
print('Excel is running, please close first')
sys.exit()
except:
print('Excel is NOT running, this is good!')
return
check_if_Excel_runs()
Mein Ausgang (wenn Excel ausgeführt wird):
Excel is running, please close first
Excel is NOT running, this is good!
Vielen Dank im Voraus!
UPDATE:
Ok, ich verstanden habe, dass ich nicht im Allgemeinen zu tun „außer“ ohne Einzelheiten enthält die Ausnahme, die ich behandeln möchten. Aber wie ermittle ich, welchen Typ die Ausnahme hat, die ich fangen will? Wenn ich mir die Fehlermeldung anschaue, ist es mir nicht klar.
com_error Traceback (most recent call last)
<ipython-input-39-70980aa1c5df> in <module>()
11 return
12
---> 13 check_if_Excel_runs()
<ipython-input-39-70980aa1c5df> in check_if_Excel_runs()
3 import sys
4 try:
----> 5 win32com.client.GetActiveObject("Excel.Application")
6 # If there is NO error at this stage, Excel is already running
7 print('Excel is running, please close first')
c:\users\chnn\appdata\local\programs\python\python36-32\lib\site-packages\win32com\client\__init__.py in GetActiveObject(Class, clsctx)
77 """
78 resultCLSID = pywintypes.IID(Class)
---> 79 dispatch = pythoncom.GetActiveObject(resultCLSID)
80 dispatch = dispatch.QueryInterface(pythoncom.IID_IDispatch)
81 return __WrapDispatch(dispatch, Class, resultCLSID = resultCLSID, clsctx = clsctx)
com_error: (-2147221021, 'Operation unavailable', None, None)
Nochmals vielen Dank für Ihre Hilfe, Leute!
Die letzte Zeile sagt 'com_error: ...', also ist Ihre Ausnahme vom Typ 'com_error'. Sie benötigen weiterhin den Paketnamen. Das Eingeben von 'python com_error' in Google ergab' pythoncom.com_error', das ist also Ihr vollständiger Ausnahmetyp. – pschill