簡體   English   中英

如何使用 VBA 宏在 SAP GUI 網格視圖中選擇當前行?

[英]How to select current row in SAP GUI Grid View with VBA Macro?

我正在嘗試在 SAP GUI 中自動執行重復性任務。 我需要搜索訂單號,選擇訂單號所在的行,然后單擊按鈕完成任務。 我錄制了一個宏,它給了我:

session.findById("wnd[0]").maximize
session.findById("wnd[0]/usr/cntlCONTAINER/shellcont/shell").pressToolbarButton "&FIND"
session.findById("wnd[1]/usr/txtGS_SEARCH-VALUE").text = "4521305207"
session.findById("wnd[1]/usr/txtGS_SEARCH-VALUE").caretPosition = 10
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[1]/tbar[0]/btn[12]").press
session.findById("wnd[0]/usr/cntlCONTAINER/shellcont/shell").currentCellColumn = ""
session.findById("wnd[0]/usr/cntlCONTAINER/shellcont/shell").selectedRows = "2894"
session.findById("wnd[0]/tbar[1]/btn[14]").press
session.findById("wnd[1]/usr/chk[1,6]").selected = true

線路:

session.findById("wnd[1]/usr/txtGS_SEARCH-VALUE").text = "4521305207"

對應於我要搜索的順序,但如果我更改此值,它仍會嘗試處理記錄宏的相同順序,我假設是因為以下行:

session.findById("wnd[0]/usr/cntlCONTAINER/shellcont/shell").selectedRows = "2894"

有誰知道我將如何找到與 SEARCH-VALUE 的結果相對應的行數,然后將其用作 .selectedRows = ""?

首先,我真的建議您添加對本機 SAP 庫的引用。 轉到您的 VBA 編輯器,依次單擊“工具”、“引用”和“瀏覽”,然后找到此文件:“C:\\Program Files\\SAP\\FrontEnd\\SAPgui\\sapfewse.ocx”。 添加它,現在您將擁有類型和庫,並且 SAP 的編碼將更容易、更安全且速度更快(VBA 中的 Variant 類型會產生很小的開銷,在這種情況下是完全沒有必要的)。 如果您要多次編寫任何 SAP 腳本,請熟悉這個新庫。

其次,關於這個問題,你有一個 shell,類型為GuiShell ,它繼承自GuiGridView GuiGridView看起來像一個表格,一組經典的 Excel 式的行和列。 在您的交易中,向您顯示一個大的訂單列表,您可以在其中單擊“查找”按鈕,放置您要查找的訂單,然后關閉搜索窗口。 回到您的 (Grid)Shell,此單元格已被選中(Grid 具有屬性SelectedCellsSelectedRowsSelectedColumns ,當您查找某些內容時,這些屬性會全部設置),但隨后您將SelectedRows的值修改為特定值。

所以是的,在查找時,已選擇了一個單元格,因此您只需查詢其行,然后將其分配到您需要的位置:

Dim numrRow As Long
numrRow = session.FindById("wnd[0]/usr/cntlGRID1/shellcont/shell").CurrentCellRow
session.FindById("wnd[0]/usr/cntlGRID1/shellcont/shell").SelectedRows = numrRow

然而,“thisShell” 是您找到對 Shell 的引用(例如session.findByID("blabla") ,但我建議減少所有 findByID,它們非常慢且類型不安全)。

如果您需要有關此 SAP 庫的幫助,請隨時發布一些新帖子,並在有關它的評論中聯系我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM