Proste macro z użyciem AutoIT – „klikacz”
Oto kolejne rozwiązanie, tak prymitywne, że tylko ja nie wstydzę się o nim mówić… Z drugiej strony, skoro Darek pisał o kawałku metalu, to niżej chyba nie można upaść ;) Wyobraźcie sobie taki scenariusz:
Przechodzimy na nowy system i trzeba założyć 1500 kont np. w SAP. Nie masz możliwości wykonania zmian masowych. Trzeba zakładać konta ręcznie…
Ręcznie?! 1500 kont? Nieee … Musi być lepszy sposób. Na ratunek przychodzi nam program AutoIT. Jest to freeware dający nam możliwość napisania prostych i mniej prostych kombinacji alpejskich – macro. Możesz symulować ruchy kursora myszki, wirtualnie naciskać klawisze klawiatury, aktywować okienka, operować na plikach, itp. API AutoIT jest dość rozbudowane i przypomina składnią BASICa. Jest prosty, dobrze udokumentowany i działa. Oto Link to strony z programem
Weźmy na warsztat przykład zakładania kont w SAP przy pomocy AutoIT na bazie pliku .xlsx (Exel). Poniższy skrypt nie robi nic poza sczytaniem wartości z wcześniej przygotowanego pliku excel, aktywowaniu odpowiedniego okienka SAP, wejścia w tryb tworzenia nowego użytkownika, wypełnieniem danych i… NIE ZAPISANIEM profilu. Jest tak prymitywny, że gimnazjalista napisałby coś lepszego, ale działa (oczywiście gdy kod zmieniony jest tak by zapisywał profil) i nie raz uratował mnie przed 2 dniowym deadline na zakładanie kont w systemie X
Mój plik Excel wygląda tak:
A skrypt wygląda tak:
#include <Excel.au3> $oExcel = _ExcelBookOpen("c:\userdata.xls") ;otwieramy excela $result=_ExcelReadSheetToArray($oExcel) $sCellValue = _ExcelReadCell($oExcel, 1, 8) ; Szczytujemy ile userow mamy do obrobienia Local $Scope = $sCellValue Local $username[$Scope] ; tworzymy zmienne/tablice pomocnicze przechowujące dane z arkusza Local $name[$Scope] Local $lastname[$Scope] Local $email[$Scope] Local $i for $i=0 To $Scope-1 Step 1 ; wczytujemy dane z arkusza do zmiennych $username[$i] = _ExcelReadCell($oExcel, $i+1, 1) $name[$i] = _ExcelReadCell($oExcel, $i+1, 2) $lastname[$i] = _ExcelReadCell($oExcel, $i+1, 3) $email[$i] = _ExcelReadCell($oExcel, $i+1, 4) Next ;ponizszy proces jest charakterystyczny dla konkretnej aplikacji - w naszym przypadku SAP SSM WinActivate("SAP Easy Access") ;Aktywacja okienka SAP sleep(500) Send("su01") Send("{ENTER}") for $i=0 to $Scope-1 Step 1 sleep(500) Send($username[$i]) Sleep(500) Send("{F8}") Sleep(1000) Send("{TAB}") Send($lastname[$i]) Send("{TAB}") Send($name[$i]) Send("{TAB 18}") Send($email[$i]) Sleep(500) Send("{F12}") Sleep(500) Send("{TAB}") Sleep(500) Send("{ENTER}") Next ;ConsoleWrite($result) _ExcelBookClose($oExcel)
A teraz o co chodzi:
Skrypt korzysta z dostarczonej biblioteki do obługi Excela. Wczytuje do pamięci i przydziela dane z komórek arkusza do odpowiednich zmiennych, po czym aktywuje okienko SAP (musisz wcześniej się zalogować do systemu) i po koleji wykorzystując skróty klawiszowe przechodzi kolejne stadia wpisywania danych bezpośrednio do SAP.
Cały pierwszy element kodu jest dość standardowy i można go wykorzystać zawsze. Cześć druga jest specyficzna dla konkretnej aplikacji. Opiera się na wysyłaniu do aplikacji kombinacji klawiszy (SEND) i nawigowaniu po interface’ie SAPa tabulatorami.
Można też to zrobić jeszcze bardziej łopatologicznie ruszając kursorem myszki, ale tutaj może pojawić się problem z rozdzielczością ekranu.
Potrzebujesz oskryptować inny program? Nie masz możliwości importu czy eksportu pliku z danymi. Nie ma problemu. AutoIT można wykorzystać w każdej aplikacji, w której można klikać.
Stąd właśnie nazwa: KLIKACZ :)
Podobne Tematy:
-
ylsz
-
ylsz
-
ylsz
-
ylsz
-
-
-
-
ylsz