Excel中的VBS状态栏

2020-08-25 02:54发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好社区, ...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好社区,

我是新来的,我的英语不是最好的...:)

使用以下代码,SAP将从Excel(A和B列)的各个字段中获取数据作为循环。 我希望在C列中的每个步骤之后都有状态栏,但我不知道它是如何工作的:)

有人可以帮助我吗?

最感谢

-----------

如果不是IsObject(application),则
设置SapGuiAuto = GetObject(" SAPGUI")
设置应用程序= SapGuiAuto.GetScriptingEngine
如果,如果不是IsObject(connection),则
连接= application.Children(0)
如果不是IsObject(session),则结束

设置会话= connection.Children(0)
如果,如果是IsObject(WScript),则结束。 br> WScript.ConnectObject会话,在"上"
WScript.ConnectObject应用程序,在"上"
结束If
session.findById(" wnd [0]")。maximize

Dim objExcel
Dim objSheet,intRow,i
设置objExcel = GetObject(," Excel.Application")
设置objSheet = objExcel.Workbooks(" ScriptOpOrders.xlsm")。Sheets(" OpOrdersRun ")
对于i = 2到objSheet.UsedRange.Rows.Count
COL1 = Trim(CStr(objSheet.Cells(i,1).Value))
COL2 = Trim(CStr(objSheet.Cells (i,2).Value))

session.findById(" wnd [0]/tbar [0]/okcd")。text =" VA05"
session.findById(" wnd [0]")。sendVKey 0
session.findById (" wnd [0]/tbar [1]/btn [33]")。press
session.findById(" wnd [1]/usr/ctxtVBCOM-VKORG")。text =" DE01"
session .findById(" wnd [1]/usr/ctxtVBCOM-VTWEG")。text =" RP"
session.findById(" wnd [1]/usr/ctxtVBCOM-SPART")。text =" US"
session.findById(" wnd [1]/usr/ctxtVBCOM-SPART")。setFocus session.findById(" wnd [1]/usr/ctxtVBCOM-SPART")。caretPosition = 2
session.findById (" wnd [1]/tbar [0]/btn [0]")。press
session.findById(" wnd [0]/usr/radVBCOM-VBOFF")。select
session.findById(" wnd [0]/usr/ctxtVBCOM-AUDAT")。text =""
session.findById(" wnd [0]/usr/ctxtVBCOM-AUDAT_BIS")。text = COL1
session.findById(" wnd [0]/usr/radVBCOM-VBOFF")。setFocus session.findById(" wnd [0]/tbar [0]/btn [0]")。press
session.findById(" wnd [0 ]/usr/cntlGRID1/shellcont/shell/shellcont [1]/shell")。contextMenu
session.findById(" wnd [0]/usr/cntlGRID1/shellcont/shell/shellcont [1]/shell")。 selectContextMenuItem" &XXL"
session.findById(" wnd [1]/tbar [0]/btn [0]")。press
session.findById(" wnd [1]/usr/ctxtDY_PATH")。text =" C:\ Users \ ... \ Desktop \ Analytics \ Repair \ OpOrders"
session.findById(" wnd [1]/usr/ctxtDY_FILENAME")。text = COL2
session.findById(" wnd [1 ]/usr/ctxtDY_FILENAME")。caretPosition = 9
session.findById(" wnd [1]/tbar [0]/btn [11]")。press
session.findById(" wnd [0]/tbar [0]/btn [15]")。按

下一个

WScript.Quit

4条回答
SAP浪
2020-08-25 03:28 .采纳回答

Max,您好

欢迎使用SAP社区。

请尝试以下方法解决您的问题。

我使用具有不同表名和最大匹配数的TAC SE16。 Excel表看起来像这样:

现在我执行脚本:

'-Begin --------------------------------------------  ---------------------

 如果不是IsObject(application)然后
   设置SapGuiAuto = GetObject(" SAPGUI")
   设置应用程序= SapGuiAuto.GetScriptingEngine
 万一

 如果不是IsObject(connection)然后
   设置连接= application.Children(0)
 万一

 如果不是IsObject(session)然后
   设置会话= connection.Children(0)
 万一

 设置objExcel = CreateObject(" Excel.Application")
 设置objSheet = objExcel.Workbooks.Open(" C:\ Dummy \ Test.xlsx")。Sheets(" Test")

 cntUsedRows = objSheet.UsedRange.Rows.Count + objSheet.UsedRange.Rows(1)。行-1

 对于i = 2到cntUsedRows

   COL1 =修剪(CStr(objSheet.Cells(i,1).Value))
   COL2 =修剪(CStr(objSheet.Cells(i,2).Value))

   session.findById(" wnd [0]/tbar [0]/okcd")。text ="/img/nSE16"
   session.findById(" wnd [0]/tbar [0]/btn [0]")。按
   session.findById(" wnd [0]/usr/ctxtDATABROWSE-TABLENAME")。text = COL1
   关于错误继续
     session.findById(" wnd [0]/tbar [1]/btn [7]")。按
     session.findById(" wnd [0]/usr/txtMAX_SEL")。text = COL2
     session.findById(" wnd [0]/tbar [1]/btn [8]")。按
   出错时转到0

   '-在这里,您将状态栏文字写回到Excel工作表中-
   objSheet.Cells(i,3).Value = session.findById(" wnd [0]/sbar/pane [0]")。text

 下一个

 objExcel.ActiveWorkbook.Save
 objExcel.ActiveWorkbook.Close
 objExcel.Application.Quit

 WScript.Quit

 '-结束 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - -  --------------------
 

然后,该表如下所示:

让我们知道您的结果。

干杯
Stefan

一周热门 更多>