Excel中的VBS状态栏

2020-08-25 02:54发布

         点击此处--->   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

         点击此处--->   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浪
1楼 · 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

土豆飞人
2楼-- · 2020-08-25 03:36

很好的信息。 可以编写代码使其与VB一起使用吗? 如果我使用SAP的"脚本记录器和回放"功能运行它,则此方法有效,但是当我将其与MS Excel的VB集成时,则不起作用。 有任何想法吗?

compass1988
3楼-- · 2020-08-25 03:45

嗨斯特凡,

我今天看到了您的答案,因为直到本周才离开办公室。 非常感谢你。 明天我会试试,让你知道:)

最好的问候

Max

clever101
4楼-- · 2020-08-25 03:35

普雷斯顿·皮肯斯

你好,普雷斯顿,

这是Excel VBA中的解决方案。

最诚挚的问候
Stefan

 Sub Test()

   昏暗的SapGuiAuto作为对象
   Dim App作为SAPFEWSELib.GuiApplication
   昏暗的连接为SAPFEWSELib.GuiConnection
   昏暗的会话作为SAPFEWSELib.GuiSession
   昏暗的objSheet作为Excel.Worksheet

   设置SapGuiAuto = GetObject(" SAPGUI")
   设置应用程序= SapGuiAuto.GetScriptingEngine
   设置连接= App.Children(0)
   设置会话= Connection.Children(0)

   设置objSheet = Application.ActiveSheet
   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

   下一个

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

 结束子
 

一周热门 更多>