SAP R/3用 手作りフロントエンド を数年前から作っていましたが、その頃には判らなかったコンテキストメニューからテキストコピーが出来ました。
以前はGoogleで検索してもエンドユーザが使うSAPのVBスクリプトの情報が殆んど無かったのですが、最近、駄目モトでもう一度検索したら、沢山の情報が有りました。
そして見つけました!
コンテキストメニューのテキストコピーの方法
これを見ながら
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell").contextMenu
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell").selectContextMenuItemByText "Text kopieren"
・・・これは出来ませんでした、さすがに「"Text kopieren"」は英語らしくないので「Text Copy」他、幾つか試しましたがエラーでした。
でも
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell").contextMenu
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell").selectContextMenuItemByPosition "0"
このVBスクリプト参考に読み込みが出来ました。
テストしていると、読み込めないケースが発生しテストを繰り返して判ったのは表示件数が180行位からエラーになっていました。
私の要件では500行を超えるデータ量が有り得るので更に調べました。
エラーメッセージをチャントメモしなかったけど、表示内容が不完全との指摘でした。
そこで、表形式の表示を最新に更新したら、一番下の行へカーソルを移動してコピーすると綺麗にコピー出来ました。
参考にスクリプトを記載します。
s = session.findById("wnd[0]/usr/ ......... shellcont[0]/shell").RowCount -1
session.findById("wnd[0]/usr/ ......... shellcont[0]/shell").firstVisibleRow = s
session.findById("wnd[0]/usr/ ......... shellcont[0]/shell").selectColumn "STATUSTEXT"
session.findById("wnd[0]/usr/ ......... shellcont[0]/shell").selectColumn "xxxx1"
session.findById("wnd[0]/usr/ ......... shellcont[0]/shell").selectColumn "xxxx2"
session.findById("wnd[0]/usr/ ......... shellcont[0]/shell").selectColumn "xxxx3"
session.findById("wnd[0]/usr/ ......... shellcont[0]/shell").setCurrentCell -1,"xxxx3"
session.findById("wnd[0]/usr/ ......... shellcont[0]/shell").contextMenu
session.findById("wnd[0]/usr/ ......... shellcont[0]/shell").selectContextMenuItemByPosition "0"
session.findById("wnd[0]/usr/ ......... shellcont[0]/shell").clearSelection
私の環境ではこの記述でOKでしたが、参考にされる場合は自己責任でお願い致します。
ちなみに、今までは印刷プレビューからデータをコピーしていました、この場合はスクリーンセーバーが働かない。
今回のテキストコピーでは、負荷が軽い?、画面偏移が無いから?、判りませんがスクリーセーバーが動作しました。
以上です。
0 件のコメント:
コメントを投稿