エクセルからデータを読取ってシステム入力をするWinAutomationの紹介です。
サンプルのファイルはこちらからダウンロード可能です。
試しに動かした動画も載せておきます。
作った処理は2つです。
エクセルのセルから読取る
エクセルの範囲から読取ってシステムへ登録
プロセス実行の事前準備
サンプルのプロセスを実行するには、準備が必要なので、以下を行っておいてください。
フォルダ作成とファイルダウンロード
C:\WinAutomation\のフォルダを作っておいてください。
また、その中にダウンロードしたファイルを解凍(展開)して配置しておいてください。
以下のような状態です。
WinAutomationのファイルをインポート
左上の「Import Process」から「エクセル読取り.waj」をインポートしておいて下さい。
Functionは2つで順番に実行されます。
・Sub_セル読取り
・Sub_範囲読取りしてシステム登録
エクセルのセルから読取る
セルを指定して、読取った内容をメッセージに表示させています。
読取るのはこんなエクセルです。
エクセルの読取り方
Read From Excel Worksheetを使って読取ります。
設定は添付のような形です。
単一のセルを読取る場合、
Retrieveは「Single Cell’s Value」
Cell Locationは列、行の番号を数字それぞれセットする
ちょっと分かりにくいのが列と行は数字で設定するところです。
F7のセルであれば、F=6列目で、7行目ということです。
その後、読取ったセルの値をメッセージで表示しています。
自動で5秒後にメッセージを閉じて、「範囲読取り」の処理が始まります。
エクセルの範囲から読取ってシステムへ登録
WinAutomationでエクセルデータをサンプルのシステムへ登録していきます。
流れは以下の通りです。
1.エクセルを開く
2.中身を読取って、エクセルを閉じる
3.サンプルのシステムを立ち上げる
4.行数分ループしながら、読取った内容を登録
サンプルエクセルから範囲を読取る
以下のような発注書のサンプルを読取ります。
読取る場所は、黄色いに囲っている範囲です。
読取る発注書の範囲はMAXで「B16~G35」のセルが固定です。
空白もあり得るので、後で考慮します。
範囲を読取る設定は以下です。
セル範囲がB16~G35なの、数字で表すと
2列目の16行目~7列目の35行目ということになります。
因みに、読取った内容は右下のVariablesの中にあるExcelDataをクリックすると確認できます。
MacroRecorderでシステム入力操作を記録する
立ち上げたシステムはそもそもどうやって入力させるのか、最初は分かりませんでした。
私は、マクロレコーダーを使って、画面の操作を記憶させていきました。
正しい方法は他にあるかもしれませんが。。。
記憶する方法は簡単で、真ん中左より上にあるMacro Recorderをクリックすると、動作をWinAutomation上で記録してくれます。
行数分ループしながら、読取った内容をシステムへ入力
システム入力をすることは、マクロレコーダーでできました。
ただ、1回までしか入力する記録ができないので、ループ処理をさせて入力します。
流れは以下の形です。
行数分ループを宣言
発注書の品名が空白ならループを終了する
発注書の品名~金額をテキストボックスに入力
登録ボタンをクリックして、メッセージを閉じる
空白ならループしている理由について
最初の行から下の行を処理していきます。
その中で空白があれば、それ以降の行も空白なので登録する必要がないという前提の処理です。
各セルのデータの取得方法
セルの内容をシステムに入力するためには、列と行が分からないと入力できません。
行については、ループを使って、1行ずつ順番の取得しています。
列は列番号を指定して、テキストボックスに入力しています。
例えば、変数の中のCurrentItemを見てみると処理している行が格納されています。
列は%CurrentItem[“列名”]%で指定できます。
読取った範囲の左側から順番にColumn1,2,3となっていきます。
なので、SKUの列を指定したい場合は、Column2となります。