COM(Component Object Model)による仕訳ファイルの作成 32



現在、事務処理で最も利用されているソフトウェアは、Microsoft社の表計算ソフトウェアEXCELでしょう
EXCELは、Windowsアプリケーションとして幾つかの部品を組み合わせて作成されています、この機能を部品化して利用する技術仕様をCOM(Component Object Model)といいます
RubyにはCOMを扱うための拡張ライブラリ「Win32OLE」があります、これを利用すればEXCELのデータをRubyから直接操作することができます
EXCELの仕訳ファイルから「展開一番」の仕訳ファイルを作成する、「Win32OLE」を利用したスクリプトを作成しました
このスクリプトは「t1_inside」というライブラリにあります、以下、スクリプトの概要を説明します


<スクリプトの概要>

1.使用するスクリプトは2つあります、「Parse9MkF1XLS2XJ」と「Pars9Fmt12XJ」です
2.「Parse9MkF1XLS2XJ」スクリプトはエクセルのファイルからデータを抽出します
3.「Pars9Fmt12XJ」スクリプトは抽出したデータの書式を整えます
 Rubyの拡張ライブラリ「Win32OLE」では、EXCELデータの数値はFloatクラスに変換されます
 このため、数値には小数点が付きます(例えば、0.0、123.0など)
 このスクリプトでは、この小数点を取り除きます
4.「Parse9MkF1XLS2XJ」は3つの引数を取ります
 1番目の引数は、EXCELのファイル名です、拡張子は不要です
 EXCELファイルは個別フォルダに置いてください
 2番目の引数は、データの上から何行目までを項目名として利用するかを指定します
 仕訳データは、左上から、項目の並びは仕訳定義ファイルと同じになるように1仕訳1行で記録します
 3番目の引数は、作成する仕訳データに付ける法人番号です
 記述例:Parse9MkF1XLS2XJ("EXData",3,2000)__EXDataというファイルの4行目以降からXJ_2000を作成
5.「Pars9Fmt12XJ」は2つの引数を取ります
 1番目の引数は、仕訳定義ファイルとして利用する法人番号を指定します
 仕訳ファイルを仮ファイルにできるように、仕訳定義ファイルを明示的に指定する仕様です
 2番目の引数は、仕訳ファイルの法人番号を指定します、上記の例では2000です
 記述例:Pars9Fmt12XJ(1000,2000)__DJ_1000のフィールド並びに従ってXJ_2000を整形する


1.EXCELシート(仕訳)の作成

EXCELで仕訳データを作成する手順は省略します
データは左上から作成することにし、最初の任意の行は見出しとして利用できるようにしています
この例では、見出し行は3行です
仕訳データは行単位で作成し、フィールドの並びは仕訳定義ファイル(任意に指定可能)と同一とします
作成したEXCELファイルに任意の名前を付けて、個別ファイルを置くフォルダに置いてください
この例では、ファイル名は「Win32OLE_Data」です
なお、個別ファイルを置くフォルダの絶対パスの指定は、プロファイルで行います





2.ユーザスクリプトの作成

ユーザスクリプトを作成します
ユーザスクリプトは「展開一番」と同じ要領で作成できます
------------------------------------------------------
require "t1_inside"
Parse9MkF1XLS2XJ("Win32OLE_Data",3,2000)
Pars9Fmt12XJ(1000,2000)
------------------------------------------------------

上記のテキストファイルに適当な名前(ここでは、「ParseXL.rb」とします)を付けて「展開一番」のライブラリ(t1.rb,t1_GC.rb,t1_inside.rb)を置いているフォルダに保存します


3.ユーザスクリプトの実行及び実行結果

ユーザスクリプトを実行します
ここでは、Winddows上でRubyを実行できる、フリーソフトウェア「RDE」を利用します
「RDE」については「フリーソフトウェア1140」を参照してください
以下に実行後の画面を掲載します(註)
ここで注意すべきは、「Parse9MkF1XLS2XJ」スクリプトの実行時間が長いことです(テストデータは136件、これの処理に5秒以上もかかっている!)
機会があれば、専門家に解説をお願いしたいところです・・・

(註)
「展開一番」はVer.7.01でスクリプト名の見直しを行い、スクリプト名を一定の規則に則り変更しています
以下の画面は、Ver.7.01以前のスクリプト名です(暇ができたら差し替えます)


ユーザスクリプトの実行によって作成された仕訳ファイル(「XJ_2000.txt」)を掲載します
「Pars9Fmt12XJ」スクリプトで整形すると、EXCELの空白欄(上記C欄)はゼロになる仕様になっています
蛇足になりますが、このユーザスクリプトに他のスクリプトを追加すれば、EXCELの仕訳データからXML形式の試算表を作成し、ブラウザでこれを閲覧することもできます




Last Update 2020/01/31