使用VBA关闭从SAP导出的Excel时出现问题
我运行一个宏,从SAP下载Excel报告,保存它,然后需要关闭Excel。我在这一页上读过类似的文章,但没有一篇能解决我的问题 问题是宏完成后,从SAP下载的excel会自动打开。就像Excel在后台运行一样。 因此,如果我在宏期间关闭它,代码将找不到打开的Excel(这是有意义的,因为Excel尚未打开),并给出错误。。但是当宏完成时,excel会出现(这是因为SAP配置,下载电子表格时excel会自动打开。我尝试过更改SAP配置,但没有成功) 我试着放置应用程序。等等,工作簿。关闭,杀死工作簿(它会导致一个问题,因为弹出窗口显示wb不存在),调用另一个子系统,等等 我尝试了一个我在本页中读到的解决方案,它是添加wshell部分,但在我的代码中不起作用 TestExcel.xlsm使用VBA关闭从SAP导出的Excel时出现问题,excel,vba,sap,Excel,Vba,Sap,我运行一个宏,从SAP下载Excel报告,保存它,然后需要关闭Excel。我在这一页上读过类似的文章,但没有一篇能解决我的问题 问题是宏完成后,从SAP下载的excel会自动打开。就像Excel在后台运行一样。 因此,如果我在宏期间关闭它,代码将找不到打开的Excel(这是有意义的,因为Excel尚未打开),并给出错误。。但是当宏完成时,excel会出现(这是因为SAP配置,下载电子表格时excel会自动打开。我尝试过更改SAP配置,但没有成功) 我试着放置应用程序。等等,工作簿。关闭,杀死工作
Sub test
'Sap conection
Application.DisplayAlerts = False
Application.ScreenUpdating = False
session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").Text = "/nzv04hn"
session.findById("wnd[0]").SendVKey 0
session.findById("wnd[0]/usr/ctxtS_VKORG-LOW").Text = "CR01"
session.findById("wnd[0]/usr/ctxtS_AUART-LOW").Text = "zor"
session.findById("wnd[0]/usr/chkP_PGI").SetFocus
session.findById("wnd[0]").SendVKey 8
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[0]").SendVKey 43
session.findById("wnd[1]/usr/ctxtDY_PATH").Text = "C:\Users\xxx\Desktop\"
session.findById("wnd[1]/usr/ctxtDY_FILENAME").Text = "CR01ZV04HN.XLSX"
session.findById("wnd[1]/usr/ctxtDY_FILENAME").caretPosition = 4
session.findById("wnd[1]/tbar[0]/btn[7]").press
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Set Wshell = CreateObject("WScript.Shell")
Wshell.Run "C:\Users\Desktop\xxx\SAP_Workbook_Close.vbs", 1, False
End sub
SAP_工作簿_Close.vbs
SAP_Workbook = "CR01ZV04HN.XLSX"
on error resume next
do
err.clear
Set xclApp = GetObject(, "Excel.Application")
If Err.Number = 0 Then exit do
'msgbox "Wait for Excel session"
wscript.sleep 2000
loop
do
err.clear
Set xclwbk = xclApp.Workbooks.Item(SAP_Workbook)
If Err.Number = 0 Then exit do
'msgbox "Wait for SAP workbook"
wscript.sleep 2000
loop
on error goto 0
Set xclSheet = xclwbk.Worksheets(1)
xclApp.Visible = True
xclapp.DisplayAlerts = false
xclapp.ActiveWorkbook.Close
Set xclwbk = Nothing
Set xclsheet = Nothing
'xclapp.Quit
set xclapp = Nothing
提前感谢您的帮助。在您的原始工作簿中尝试此操作:
Application.DisplayAlerts=False:Application.Quit
它不起作用。请尝试xclapp.Quit
在第xclapp.ActiveWorkbook.Close
行后退出。若要查看您的程序有多远,请在脚本中激活以下命令:msgbox“等待Excel会话”和msgbox“等待SAP工作簿”如果在代码中显式打开工作簿并将其关闭,会发生什么情况?