SikuliX(シクリックス)を用いてエクセルファイル内の全セルの情報を読み取り、順次処理を行う方法をご紹介させていただきます。

今回読み込むのこのようなエクセルファイルです。
シクリのコードは以下のようになります。
import sys#ここから3行は定型文
reload(sys)
sys.setdefaultencoding('utf-8')#文字コードを変更
import xlrd#エクセル処理用
import datetime#日付処理用
excelfile = "C:/sikuliX/test.xlsx"#読み込むファイル
excelbook = xlrd.open_workbook(excelfile)#先ほどのファイルを開く
excelsheet = excelbook.sheet_by_index(0)#一番左のシートが0なので注意
for row in range(0,excelsheet.nrows):#0は1行目からスタートという意味。nrowsは最大行
for col in range(excelsheet.ncols):#ncolsは最大列
celltype= excelsheet.cell_type(row,col)
value = excelsheet.cell_value(row,col)
if celltype == 1:#文字列
print str(col) + "列目" + " " + str(row) + "行目 " + value
elif celltype == 2:#数値
print str(col) + "列目" + " " + str(row) + "行目 " + str(value)
elif celltype == 3:#日付
day = datetime.datetime(*xlrd.xldate_as_tuple(value,excelbook.datemode)).strftime("%Y/%m/%d")
print str(col) + "列目" + " " + str(row) + "行目 " + day
実行した結果は以下の通りです。
正しく読み込めているようです。

シクリックスはPython以外にもJavaスクリプト、Rubyを組み込むことが可能です。
JavaスクリプトやRubyを得意な方はそちらと組み合わせて使うのが良いと思いますが、そうでない方はPythonの使用をお勧めします。
これはPythonが海外では小学校で勉強する程度に簡単で習得しやすい言語である点、AIの開発がPythonにほぼ一本化されており将来そちらの方に技術を伸ばせる余地を残すため、Pythonを習得した方が良いと思われるためです。
Pythonは2と3との2種類が存在し、シクリックスが使えるのは2だけです。これはAI等、将来の技術をシクリックスに取り込むことが困難ということを意味しますが、RPAを作る分にはほとんど困らないのも事実です。
シクリックスはRPA作成のためのツール、およびPythonの使い方を習得するための補助ツール、との認識が正しいと思います。
シクリックスはプログラミング初心者がRPAやプログラミングに興味を持つ、そのために有効なツールなのですが、シクリックスの面白いところは上級者も使えるツールだというところです。
下の画像はシクリックスの簡単なサンプルです。

プログラミングを知らない方、シクリックスを見たことがない方でも内容が理解できると思います。シクリックスの良いところが、高度なプログラムを組むにはPythonを使う必要がある、ただし完成したプログラムをメンテナンスするだけならそれほど高いスキルがなくても対応できる点です。
RPAでメンテナンスが必要なのは、ボタンの位置だったり内部に持っているセレクタ等の情報、ちょっとした部分が大半です。
先ほどの図でclick(画像)となっている部分です。この部分の修正のみなら、高度なプログラミングスキルは不要です。
シクリックスを用いた運用で一つ考えられるのが、「プログラミング上級者がプログラムを組み、メンテナンスを中級、もしくは初心者が行う」という方法です。
中級者と初心者は上級者の技を盗み、スキルを高めていきます。
これがRPAの安思います。定運用には極めて重要で、私がシクリックスを推奨するもう一つの理由です。
今回はPythonに関する細かい文法は省略させていただきました。
仕様がVBAとは大きく異なり、VBAに慣れている方はむしろ習得が難しくなる懸念があります。慣れるまでは大変だとおもいますが、習得すると業務の範囲が大きく広がると思います。そのためにシクリックスを活用してみていただければと思います。
シクリックスをPython3に対応させる対応も有志の方によって行われているようです。
完成を期待しています。
。
Comments