![](/img/trans.png)
[英]How to Add polyline in Excel with python win32com.client?
[英]How to close an Excel file opened by another application? Using python with win32com.client
我正在使用 Python 使用庫 win32com.client 來自動化 SAP GUI 中的流程。
一切正常,直到 SAP 在進程的最后打開一個 Excel 文件。
我需要關閉這個文件(並且只有這個文件)。
原來的腳本來自a.bas文件,我把必要的改寫成Python。 在.bas 文件中,Excel 文件已使用Workbooks("YVA05_********").Close
請幫我用一條簡單的線來關閉這個 Excel 文件(就像舊代碼一樣,但是對於我的 Python 應用程序),我將永遠感激不盡。
干杯
from datetime import datetime
from win32com.client import Dispatch
import win32com.client
import time
import subprocess
excel = Dispatch("Excel.Application")
today = datetime.today()
today_modified = "{:02}.{:02}.{}".format(today.month, today.day, today.year)
month_init = "{:02}.01.{}".format(today.month, today.year)
file_name = f"{today.year}-{today.month:02}"
def extract_data_process(month_init,today_modified,file_name,session):
session.findById("wnd[0]/usr/ctxtS_SAUDAT-LOW").text = f"{month_init}"
session.findById("wnd[0]/usr/ctxtS_SAUDAT-HIGH").text = f"{today_modified}"
session.findById("wnd[0]/tbar[1]/btn[8]").press()
time.sleep(6)
session.findById("wnd[0]/usr/cntlCONTAINER/shellcont/shell").pressToolbarContextButton("&MB_EXPORT")
session.findById("wnd[0]/usr/cntlCONTAINER/shellcont/shell").selectContextMenuItem("&XXL")
session.findById("wnd[1]/usr/ctxtDY_PATH").text = "C:\\Users\\*****************"
session.findById("wnd[1]/usr/ctxtDY_FILENAME").text = f"YVA05_{file_name}.XLSX"
session.findById("wnd[1]/tbar[0]/btn[11]").press()
# Here the excel is opened
session.findById("wnd[0]/tbar[0]/btn[3]").press
pathname = r"C:\Program Files (x86)\SAP\FrontEnd\SAPgui\saplogon.exe"
subprocess.Popen(pathname)
time.sleep(8)
SapGuiAuto = win32com.client.GetObject('SAPGUI')
if not type(SapGuiAuto) == win32com.client.CDispatch:
exit()
application = SapGuiAuto.GetScriptingEngine
if not type(application) == win32com.client.CDispatch:
SapGuiAuto = None
exit()
connection = application.OpenConnection("*****************", True)
if not type(connection) == win32com.client.CDispatch:
application = None
SapGuiAuto = None
exit()
session = connection.Children(0)
if not type(session) == win32com.client.CDispatch:
connection = None
application = None
SapGuiAuto = None
exit()
session.findById("wnd[0]/usr/txtRSYST-MANDT").text = "***"
session.findById("wnd[0]/usr/txtRSYST-BNAME").text = "***********"
session.findById("wnd[0]/usr/pwdRSYST-BCODE").text = "**************"
session.findById("wnd[0]/usr/txtRSYST-LANGU").text = "EN"
session.findById("wnd[0]").sendVKey(0)
# time.sleep(2)
# session.findById("wnd[1]").sendVKey(0)
# time.sleep(2)
session.findById("wnd[0]/tbar[0]/okcd").text = "****"
session.findById("wnd[0]/tbar[0]/btn[0]").press()
session.findById("wnd[0]/tbar[1]/btn[17]").press()
session.findById("wnd[1]/usr/txtV-LOW").text = "*********"
session.findById("wnd[1]/usr/txtENAME-LOW").text = ""
session.findById("wnd[1]/tbar[0]/btn[8]").press()
extract_data_process(month_init,today_modified,file_name,session)
希望這個 function 能解決您的問題
import os
def close():
try:
os.system('TASKKILL /F /IM excel.exe')
except Exception:
print("KU")
close()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.