以下、本発明の実施の形態を添付図面を参照して説明する。
<第1実施形態>
まず、図1~図10を参照して、本発明の第1実施形態について、説明する。
図1は、本発明の実施形態に係る会計プログラムを搭載して当該プログラムを実行させたときの会計システムの機能ブロック構成図である。会計システム1は、図1に示すように、入力部2と、演算処理部3と、表計算ソフトウェア及び会計プログラムを記憶した記憶部4と、出力部5と、を少なくとも備えている。
会計システム1は、入力部2と演算処理部3と表計算ソフトウェア及び会計プログラムを記憶した記憶部4と出力部5とを備えたコンピュータを用いて、表計算ソフトウェア及び会計プログラムを演算処理部3で処理することにより実現される。ここで、表計算ソフトウェアには、複数の会計処理シートが予め設定されている。
よって、演算処理部3は、会計ソフトウェアにより実現される会計処理部3aと、自動化処理部3bを構成する。自動化処理部3bは、複数の会計処理シートの一シート内のセル間及び複数のシート内のセル間を関係付ける数式に関し、自動付与、自動修復の何れか一方又は双方を行う。
この自動付与、自動修復は、複数の会計処理シートの間を遷移するとき、会計プログラムの起動、終了の何れかのとき、複数の会計処理シートの何れかのシート内のセルであって予定される数式以外を入力するとき、の少なくとも一つ以上のときに行われる。
自動付与・自動修復を説明する前提として、会計プログラムの起動から日々の利益額の計算までのプロセス、さらには決算書作成までのプロセスを説明する。
ステップ1:会計プログラムを起動する。この会計プログラムは、エクセル(登録商標)等の表計算ソフトウェア上で起動させることができる。すると、会計プログラム上に既に入力されている複数のシートが表示可能な状態となる。表示可能なシートは、「売上・仕入」、「日別残高」、「損益計算」、「経費」などのシートである。
ステップ2:シートのうち「売上・仕入」を選択し、請求書の内容、すなわち、客先
(取引先)名、売上、仕入を入力する。すると、売上、仕入などが積算され、「損益計算」と「日別残高」に反映される。
ステップ3:シートのうち「経費」を選択し、各種の経費を入力する。すると、経費、雑収入などが積算され、「損益計算」と「日別残高」に反映される。
ステップ4:シートのうち「日別残高」を選択し、日々の現金の残高と預金残高を表示する。これは、入力誤りや入力漏れなどの人的な誤りを発見するための、情報提供となる。
ステップ5:シートのうち「損益計算」を選択すると、日々の利益金額が自動で生成される。決算時には、決算処理をした後に、シートを印刷して、決算書の一部として税務署に提出できる。
ここで、会計プログラムで作成されているフォームとしての各シートについて説明する。図2は本発明の実施形態に係る複数の会計処理シートのうち、売上・仕入のシートの一例を示す図、図3は本発明の実施形態に係る複数の会計処理シートのうち、日別残高のシートの一例を示す図、図4は本発明の実施形態に係る複数の会計処理シートのうち、損益計算のシートの一例を示す図、図4は本発明の実施形態に係る複数の会計処理シートのうち、経費のシートの一例を示す図である。
「売上・仕入」のシートには、「売上・仕入、品物の動き」と「決済情報、お金の動き」の二つの大項目に分かれている。前者の大項目「売上・仕入、品物の動き」は、「No」、取引日付を示す「年月、日」、「勘定科目」、「顧客先名」、「内容、数量」、「取引金額」などの項目で構成される。後者の大項目「決済情報、お金の動き」は、取引日付を示す「年月、日」、「上期/下期」、「当社負担分の送金手数料」、「現金」の入金及び出金、「預金1」の入金及び出金、「預金2」の入金及び出金、「預金3」の入金及び出金などの項目で構成される。
「日別残高」のシートは、取引のあった日毎に、「現金」、「預金1」、「預金2」、「預金3」などのそれぞれの入金と出金と残高の項目で構成される。
「損益計算」のシートは、「単月の合計」と「期首からの合計」の二つに大別され、それぞれ、「売上」、「仕入」、「売上利益」、「雑収入」、「経費」、「総利益」の各項目で構成される。
「経費」のシートは、取引日付を示す「年月、日」、「経費の識別コード」、「勘定科目」、「現金」「預金」の各項目で構成され、「現金」は入金及び出金で構成され、各預金は「入金」、「出金」、「振込手数料」の各項目で構成される。「勘定科目」としては、通信費、事務用品、旅費交通費、外注加工費、給与、水道光熱費などがある。なお、「損益計算」のシートとは、「経費の識別コード」をキーとして他の値と連携している。
これらのシートを構成する各項目のセルは、本プログラムで与えられた数式により関連づけられ、シート間でのセル内の情報を関連づけている。関連性については会計の分野においては公知である。また、セル間の関連付けの仕組みそれ自体についても公知である。しかしながら、その関係性の数式それ自体は公知ではない。本発明者が自ら創作したものである。例えば、「経費」シートにおいて、自動修復の対象の列の数式は、次のようになる。
"=IF(OR(ISERR(DATEVALUE(INT(RC5/100)+1988 &"/"& MOD(RC5,100)&" / "& OFFSET(RC5,,1))),RC5>3100,RC5<2601),1,IF(RC5<OFFSET(RC5,1,),IF(RC5=EVEN(RC5),55,44),IF(RC6=OFFSET(RC6,-1,), IF(OR( OFFSET(RC,-1,)=4, OFFSET(RC,-1,)=5, OFFSET(RC,-1,)=1 ), OFFSET(RC,-1,),IF(RC5=EVEN(RC5),5,4) ),IF(OR(OFFSET(RC,-1,)=1,OFFSET(RC,-1,)=44,OFFSET(RC,-1,)=55),IF(RC5=EVEN(RC5),5,4),1))))"
ここで、RC5、RC、RC6は各参照セルを示す。
また、「売上・仕入」、「日別残高」、「損益計算」、「経費」の4シート間の連携は、数式のみに依存する。この4シートのみでも、法人税の白色申告ができる。
本発明の実施形態において、或るシート内のセル間において数式で関係付けられ、又は、或るシートと別のシートとのセル間において数式で関係付けられているとき、数式の自動付与及び自動修復に関する機能を備える。
図6は、本発明の実施形態に係る会計システムにおいて、数式の自動付与、自動修復の処理を示すフロー図である。
先ず、或るシートから別のシートに移動するか、又は或るシートにおいてセルに何らかの入力があるかを判断する(step11)。
Step11においてYesの場合、或るシートにおいて数式が入るべきセルを精査し、当該セルに正しい数式が入力されているか否かを判定する(step12)。
Step12においてNoの場合、正しい数式を自動付与する(Step13)。
例えば、Step12において、数式が入力されるべきセルがブランク(空白)になっているためNoの判定となっている場合、Step13において当該セルに数式が自動付与される。操作員が無意識にセル内の値(情報)をDeleteした場合などに対応することができる。
例えば、Step12において、或るシート上で数式が入力されるべきセルに対して本来定義されるべき数式と異なっている数式が入力されているため、Noの判定となっている場合、Step13において当該セルに数式が自動付与される。操作員が無意識にセルを選択して誤って修復操作をした場合などに対応することができる。
例えば、Step12において、或るシート上で行を挿入したため数式が入力されていないセルが生じ、Noの判定となっている場合、Step13において当該セルに数式が自動付与される。操作員が行の挿入をした場合などに対応することができる。
なお、Step12において、或るシート上でセルに定数を入力したためNoの判定となっている場合、Step13において当該セルへの数式の自動入力はなされない。これは、操作員が意識的に当該セルに定数を入力した場合などに対応するためである。意識的に当該セルに定数を入れる必要がある場合とは例えば、或る売掛金の決済に「預金1」の勘定及び「現金」の勘定などの複数の勘定を同時に用いる場合や、「預金2」、「預金3」のような数式の対応していない勘定を用いる場合である。「売上・仕入」のシートにおいては、売掛金の回収時に、「預金1」の勘定又は「現金」の勘定の何れか一方の勘定で、全額決済されるという前提で、数式が定義されているが、実務ではそれ以外の決済方法が良く表れる。このような場合に対応することを可能にするため、定数値の入力を許容するものである。
本発明の実施形態に係る会計端末装置1は、図1に示すように、会計システム1において会計プログラムを実行することにより具現化され、複数の会計処理シートを予め設定している表計算ソフトウェアによる会計処理部3Aと、複数の会計処理シートの一シート内のセル間及び複数のシート内のセル間を関係付ける数式に関し、自動付与、自動修復の何れか一方又は双方を行う自動化処理部3Bと、入力部2と、出力部5と、を備える。
このような会計端末装置1を用いることにより、本発明の実施形態に係る会計方法として、表計算ソフトウェアに対して複数の会計処理シートを予め設定しておき、複数の会計処理シートに対し、日々の取引を入力する際、複数の会計処理シートの間を遷移するとき、表計算ソフトウェアの起動、終了の何れかのとき、複数の会計処理シートの何れかのシート内のセルであって予定される数式以外を入力するとき、複数の会計処理シートの一シート内のセル間及び複数のシート内のセル間を関係付ける数式に関し、自動付与、自動修復の何れか一方又は双方を行うことができる。
本発明の実施形態では、このように、数式の自動付与、自動修復機能を有するため、或るシート内又はシート間においてセルに正しい数式を定義しておくことにより、正しい計算結果を表示することができる。よって、或るシートにおいて行の挿入、削除の何れか一方又は双方があっても、その挿入、削除に対応させて数式の自動付与及び自動修復をすることができる。セルに正しい数式を定義しておくための技術としては、エクセル(登録商標)には「セル保護、ワークシート保護」の機能があるが、それらの機能を取り入れると、使い勝手の劣るシステムとなる。本発明の数式の自動付与・自動修復は、セルに正しい数式を定義しておきつつ、必要な場合には定数入力も許す、そんな堅牢性と柔軟性に優れた技術である。
この数式の自動付与、修復機能は、或るシートから別のシートに移動するか、又は或るシートにおいてセルに何らかの入力があるかを判断するだけでなく、操作員が特定の指示、例えば「修復」のボタンをONにしたり、ファイルを保存したりする場合であってもよい。
以下、具体的な場面を想定して説明する。図7は、操作員が意図せずに数式を削除する場面において、マクロによる数式の自動修復の状況に関し、会計システム1の出力部4の表示状況を示す図である。
「売上・仕入」のシートにおいて、「決済情報、お金の動き」の「預金」の入金に対して数式が予め入力されているとする。すなわち、図7(A)に示すように、表示部4の画面上部の数式バーには、数式が表示されている。
その後、図7(B)に示すように、操作員がその数式をDeleteしたとすると、その直後の状態は、図7(B)に示すように、数式が入力されるべきセルなのに、ブランク(空白)になっている。
暫くすると、例えば1秒ほど待つと、マクロの働きにより、図7(C)に示すように正しい数式が付与される。
図8は、操作員が意図せずに数式を変更する場面において、マクロによる数式の自動修復の状況に関し、会計システム1の出力部4の表示状況を示す図である。
「売上・仕入」のシートにおいて、「決済情報、お金の動き」の「預金」の入金に対して数式が予め入力されているとする。すなわち、図8(A)に示すように、表示部4の画面上部の数式バーには、数式が表示されている。
その後、図8(B)に示すように、操作員がその数式に対して"+456"を付け加えたとすると、その直後の状態は、図8(B)に示すように、本来定義されるべき数式と異なっている数式が入力されているため、変更後の数式が計算され、「入金」列のセルには456円多い金額が表示される。
暫くすると、例えば1秒ほど待つと、マクロの働きにより、図8(C)に示すように正しい数式に修復される。
図9は、操作員が行を挿入する場面において、マクロによる数式の自動修復の状況に関し、会計システム1の出力部4の表示状況を示す図である。
操作員が「売上・仕入」のシートにおいて行を挿入しようとすると、図9(A)に示すように、セルの挿入を行全体において行ってよいかについての「OK」、「キャンセル」の選択状態となる。
「OK」を選択すると、図9(B)に示すように、行を挿入したため、数式が入力されていないセルが生じている。
暫くすると、例えば1秒ほど待つと、マクロの働きにより、図9(C)に示すように、正しい数式が付与される。
図10は、操作員が定数を入力する場面において、マクロによる数式の自動修復がなされない状況に関し、会計システム1の出力部4の表示状況を示す図である。
「売上・仕入」のシートにおいて、「決済情報、お金の動き」の「預金」の入金に対して数式が予め入力されているとする。すなわち、図10(A)に示すように、表示部4の画面上部の数式バーには、数式が表示されている。
その後、図10(B)に示すように、操作員が、数式を削除した後に定数として "234000"を入力する。すると、マクロは働かず、図10(C)に示すように、定数"234000"の入力が、受け入れられる。
以上説明したように、本実施形態の会計プログラムは、複数の会計処理シートを予め設定している表計算ソフトウェアが搭載されたコンピュータに搭載される会計プログラムであり、前記複数の会計処理シートの一シート内のセル間及び複数のシート内のセル間を関係付ける数式に関し、自動付与、自動修復の何れか一方又は双方を行う自動化処理部を、前記コンピュータに付与する、会計プログラムである。
上記会計プログラムにおいて、複数の前記会計処理シートが、売上・仕入シート、日別残高シート、損益計算シート、及び、経費のシートの組である。
上記会計プログラムにおいて、前記自動化処理部は、自動付与及び自動修復を、複数の前記会計処理シートの間を遷移するとき、前記会計プログラムの起動、終了の何れかのとき、複数の前記会計処理シートの何れかのシート内のセルであって予定される数式以外を入力するとき、の少なくとも一つ以上のときに行う。
また、本実施形態の会計システムは、表計算ソフトウェアを格納したコンピュータと、本発明の会計プログラムと、を備える。
また、本実施形態の会計端末装置は、複数の会計処理シートを予め設定している表計算ソフトウェアによる会計処理部と、複数の会計処理シートの一シート内のセル間及び複数のシート内のセル間を関係付ける数式に関し、自動付与、自動修復の何れか一方又は双方を行う自動化処理部と、入力部と、出力部と、を備える。
また、本実施形態の会計方法は、表計算ソフトウェアに対して複数の会計処理シートを予め設定しておき、複数の会計処理シートに対し、日々の取引を入力する会計方法であって、複数の会計処理シートの間を遷移するとき、表計算ソフトウェアの起動、終了の何れかのとき、複数の会計処理シートの何れかのシート内のセルであって予定される数式以外を入力するとき、複数の会計処理シートの一シート内のセル間及び複数のシート内のセル間を関係付ける数式に関し、自動付与、自動修復の何れか一方又は双方を行う。
上記の実施形態に係る発明によれば、複数の会計処理シートを予め設定している表計算ソフトウェアに対して、複数の会計処理シートの一シート内のセル間及び複数のシート内のセル間を関係付ける演算式に関し、自動付与、自動修復の何れか一方又は双方を行う。そのため、複数の会計処理シートを個人事業主又は小規模会社の規模に応じて設定することができ、しかも表計算ソフトウェアについて最低限の知識を有する者であれば使用することができる。よって、小規模会社や個人事業主の規模、体裁に応じて作成することができる会計プログラム及び会計システムを提供することができる。
<第2実施形態>
次に、図11から図26を参照して、本発明の第2実施形態として、情報処理システム(情報処理装置)10について説明する。
<全体構成>
図11は、本実施形態に係る情報処理システム10の構成の一例を示す概要図であり、同図(A)は、情報処理システム10のハードウェア構成を示す概要図であり、同図(B)、同図(C)は情報処理システム10の機能の一例を示すブロック図である。
同図(A)に示すように、第2実施形態の情報処理システム10は、表計算ソフトウェアを実行することが可能な情報処理端末19を含んで構成される。ここでは一例として、単独の情報処理端末19によって情報処理システム10が構成され、すなわち情報処理システム10が情報処理装置でもある場合について説明する。
情報処理端末19は例えば、入力手段11と、出力手段12と、制御手段13と、記憶手段14などを備えた既知のパーソナルコンピュータである。入力手段11は、例えばキーボードやタッチパネルであり、その他マウス、マイク、マウスと協働してポインティングデバイス機能を実現するモニタなどが含まれてもよい。出力手段12は、例えばディスプレイであり、その他スピーカやプリンタなどが含まれてもよい。
制御手段13は、情報処理端末19(情報処理システム10)を統括的に制御するCPU(Central Processing Unit)等である。記憶手段14は、例えば、RAM(Random Access Memory)・ROM(Read Only Memory)等のメモリ装置、ハードディスクのような固定ディスク装置、フレキシブルディスク、及び光ディスク等などであり、OS(Operating System)等の制御プログラム・各種の処理手順等を規定したプログラム・所要データなどが格納される。制御手段13は、記憶手段14に格納されているこれらのプログラムに基づいて種々の情報処理を実行する。
また、記憶手段14には、例えば、表計算ソフトウェア16のアプリケーションプログラムおよび、当該表計算ソフトウェアを利用して構築した、本実施形態の情報処理システム10を実現するためのプログラム(情報処理プログラム20)が格納されている。
なお、情報処理システム10は、通信インターフェイスを備えた情報処理端末19と、不図示のサーバ、および情報処理端末19とサーバを相互に通信可能に接続するネットワークを含んで構成されてもよい。この場合、サーバは例えば会計データを含む種々のデータや表計算ソフトウェアを含む種々のアプリケーションプログラムが格納され、情報処理端末19は、ネットワークを介してこれらのデータやアプリケーションプログラムを取得し、記憶手段14に格納して各種処理を実行可能に構成されていてもよい。
また、情報処理端末19は、パーソナルコンピュータに限らず、PDA(Personal Digital Assistants)、スマートフォン、タブレット型端末などの携帯型情報処理装置であってもよい。
同図(B)を参照して、本実施形態の情報処理システム(情報処理装置)10は、上記のハードウェアと、OSや表計算ソフトウェア16のプログラム、本実施形態の情報処理プログラム20を含むソフトウェアとが協働し、所定の定型処理を実行するための基本処理機能と状態更新機能を含む情報処理機能を実現するものである。
すなわち、情報処理システム(情報処理装置)10は、その機能として、表計算ソフトウェア16を用いて所定の定型処理を実行可能に構成され、入力手段11と、出力手段12と、基本処理機能を実現する基本処理手段15と、状態更新機能を実現する状態更新処理手段17とを備える。
ここで、以下の例では、所定の定型処理が会計処理であり、情報処理システム10が会計処理システムである場合について説明する。
また、第2実施形態の情報処理システム10には、第1実施形態の会計システム1が含まれてもよいし、含まれなくても良い。第2実施形態の情報処理システム10に第1実施形態の会計システム1が含まれる場合、第2実施形態の基本処理手段15には、例えば第1実施形態の会計処理部3aが含まれ、第2実施形態の状態更新処理手段17には、例えば第1実施形態の自動化処理部3bが含まれていてもよい。
本実施形態の情報処理システム10を構成する情報処理プログラム20(会計処理システム10を構成する会計処理プログラム20)は、表計算ソフトウェア16を用いて会計処理システム10の提供者によって設計されたプログラムである。表計算ソフトウェア16はスプレッドシートとも呼ばれ、行方向及び列方向に配列した複数のセルにある情報を定義することによって、様々な演算を含む処理を実行可能とするものである。
大量のデータを扱うシステムとしては、一般的に関係データベース(RDB:relational database)が利用される場合も多い。しかしながら、RDBを用いたシステムでは小規模なユーザの場合に、機能が複雑すぎたり、カスタマイズが困難であるなど、扱いにくい問題がある。これに対し、表計算ソフトウェア16は、そもそもユーザが表形式で仕組みを作りながら(必要な演算等をセルに書き込みながら)運用するように構成されている。このため、従来の手書き帳簿のようにユーザにとってなじみのある環境を再現しつつ運用することも可能となる。本実施形態では、表計算ソフトウェアの一例としてマイクロソフト社のエクセル(登録商標)を用いる場合について説明する。
表計算ソフトウェア16は、上記のとおり既知のものであり、当該表計算ソフトウェア16のメーカが提供する様々な機能を含んでいる。以下、これらの表計算ソフトウェア16に本来備わる各種機能を「基本機能」と総称する。基本機能には、様々な演算を行うための演算子、関数、マクロの記録手段、行・列の追加/削除、シートの追加/削除などが含まれる。また、GUI(Graphical User Interface)による対話形式の操作で行・列の追加や削除が可能に構成されており、あるセルに行または列を跨ぐ演算式(数式、文字列式を言う。以下同じ)が設定されていた場合において、GUIによる対話形式の操作で行・列の追加や削除があると、当該演算式が自動的に補正される機能(以下これを「自動修正機能」という。)も有している。この自動補正機能も基本機能に含まれる。
同図(B)に示すように、会計処理プログラム20は、会計基本処理プログラム21と、状態更新処理プログラム23とを有する。会計基本処理プログラム21は、表計算ソフトウェア16の基本機能を用いて、所定の定型処理(会計処理)が実行可能となるように、すなわち、会計処理の本来的機能を実現するために、各セルに対する関数等の定義やマクロなどを用いて設計されたプログラムであり、当該プログラムの実行により通常の損益計算や残高計算、仕訳などの会計処理が行える。
また、状態更新処理プログラム23は、会計処理システム10の起動時、あるいは会計基本処理プログラム21の何らかの処理が実行された時、あるいは、エンドユーザによって、操作可能対象(セル、行、シート)の操作があり、具体的にはセルの操作(入力、削除等)、行・列の操作(挿入、削除、移動)、シートの操作(追加、削除、差換え)などがあり、会計基本処理プログラム21の本来の構成(設計者が意図した構成)が変更された場合などに、会計基本処理プログラム21の本来の構成が実行可能となるように、あるいは本来の構成に戻すように、操作可能対象の状態を更新する(自動で修復する)プログラムである。この状態更新処理プログラム23は、表計算ソフトウェア16の基本機能(関数、演算子、マクロなど)を用いて設計され、後に詳述するが、表計算ソフトウェア16の基本機能では不足する機能や、基本機能の一部(例えば、自動修正機能)を無効にする機能なども含まれる。
同図(C)~同図(E)を参照して、基本処理手段15は、会計基本処理プログラム21を含んで構成され、定型処理(ここでは、会計処理(会計処理において目的の結果を得るための計算処理)、以下同様)を実行するために、会計基本処理プログラム21として表計算ソフトウェア16の少なくとも1つのセルに関連して定義された定義情報Sを実行可能である。
本実施形態における定義情報Sとは、会計基本処理プログラム21の一部を構成する情報であり、表計算ソフトウェア16の基本機能を利用して、セルに予め定義(設定)された、関数、演算式(数式、文字列式)、文字列、数値など、セルに入力可能な全ての値である。また、定義情報Sは、表計算ソフトウェア16のシート上においてユーザの操作(数値の入力等)の対象として予定する領域(以下、「操作予定領域22」という。)のセルに対して定義される情報(値)をいう。この場合、操作予定領域22に直接定義(記載)される情報と、マクロの実行によって対象となるセルに(マクロで指定されたセルに)定義(記載)される情報とを含む。
また、基本処理手段15は、表計算ソフトウェア16の基本機能(自動修正機能、会計基本処理プログラム21に含まれるマクロの実行なども含む)を実行する手段である。
基本処理手段15は、ユーザが操作予定領域22のセルに入力した数値等に基づき、会計基本処理プログラム21を実行し、定義情報Sやマクロを用いて所望の会計処理を実行する。
状態更新処理手段17は、状態更新処理プログラム23を含んで構成され、再定義情報Rを用いて操作可能対象についての状態を更新可能な手段である。状態更新処理手段17が状態を更新するタイミングは、会計処理システム10の起動時、会計基本処理プログラム21によって何らかの処理が実行された時、あるいは、定義情報Sが関連するセル、行、列、シートの少なくともいずれかの操作可能対象について、ユーザ(会計処理システム10のエンドユーザ、以下同様)の操作がされた時である。
具体的には、状態更新処理手段17は、状態更新処理プログラム23の実行により、再定義情報Rおよびこれを用いるマクロを実行可能であり、これにより操作可能対象についての状態を更新する。なお、以下の説明において、会計基本処理プログラム21を構成するマクロを「会計基本マクロ」といい、状態更新処理プログラム23を構成するマクロを「再定義マクロ」という。
ここで、本実施形態における「マクロ」とは、アプリケーションの内側で実行することができる命令のセットをいい、この例では、表計算ソフトウェア16において一連の処理手続きを自動化する命令のセットをいう。より詳細に本実施形態の「マクロ」は、キー操作をそのまま記録・再現するキーボードマクロによって複数の手順を記憶して自動的に実行させるマクロ、マクロ言語(マクロを記述するコンピュータ言語)を用いたプログラミングによって記述された処理手順を呼び出して実行するマクロ、VisualBasicなどのプログラミング言語で表計算ソフトウェア16に既存の機能を制御するもの、表計算ソフトウェア16の既存の機能(演算式などの基本機能)を組み合わせて一つの纏まりのある機能を構成するもの(言語による制御は必須でない)の全部又は一部をいう。
例えば、会計基本マクロは、表計算ソフトウェア16の基本機能を組み合わせて一つの纏まりのある機能を自動で実行させる命令のセットであってもよいし、再定義マクロは、表計算ソフトウェア16の基本機能を組み合わせて一つの纏まりのある機能を自動で実行させるほか、マクロ言語やプログラミング言語を用いて所定の機能を自動で実行させる命令のセットであってもよい。
状態更新処理手段17は、会計処理システム10の起動時や会計基本処理プログラム21実行時のあるタイミング、あるいは定義情報Sが関連する行または列の操作(追加、挿入、削除、複写)がされた場合、および、定義情報Sが定義されているセルに任意の値が上書きまたは該セルの内容が削除された場合に、再定義情報Rと再定義マクロを用いて、少なくとも一つのセルに定義情報Sを再定義する。
再定義情報Rは、状態更新処理プログラム23の一部として、定義情報Sと同様に表計算ソフトウェア16の少なくとも1つのセルに予め定義(設定)された、関数、演算式(数式、文字列式)、文字列、数値など、セルに入力可能な全ての値である。ただし、定義情報Sが操作予定領域22のセルに対して定義されるのに対し、再定義情報Rは、シート上ではあるが、操作予定領域22以外の再定義情報設定領域25に設定される。この再定義情報設定領域25は、通常、ユーザには視認不可とされており、ユーザの操作対象とはならない(ユーザによる操作を予定しない)領域となっている。
再定義情報Rは、定義情報Sが定義されていたセルが、ユーザの操作によって定義情報S以外の値に変更(削除、上書き等)された場合に、当初定義されていた定義情報Sを再定義するための情報である。より詳細には、同図(C)、同図(D)に示すように、定義情報生成欄27に含まれるある定義情報Sがユーザの操作によって変更された場合に、同図(E)に示すように定義情報生成欄27に再定義情報Rを複写することによって、当初定義されていた定義情報Sを復元するための情報である。再定義情報Rの内容(値)は、定義情報生成欄27の定義情報Sの内容(値)と同一の場合もあるし、再定義情報Rの値を定義情報生成欄27のセルに複写した結果、表計算ソフトウェア16の自動修正機能により定義情報Sの内容と同一になる値の場合もある。
また、基本処理手段15は、会計基本処理プログラム21の実行により例えば複数のシートに亘る処理(例えば、一のシート中のセルに定義されている定義情報Sから他のシート中のセルに定義されている定義情報Sを参照したり、複数のシートにおいて同じ領域(アドレス)に存在するセルの定義情報Sを串刺しで演算するなどの処理)を実行する場合がある。状態更新処理手段17は、シートの追加または差換えの操作があった場合において、基本処理手段15によって複数のシートに亘る処理を実行する際に、追加又は差換えのあったシートを参照の対象とするように、操作可能対象の状態を更新する。
本実施形態の会計処理システム10は、表計算ソフトウェア16を利用することで、従来の手書き帳簿のようにユーザにとってなじみのある環境を再現しつつ、更にはユーザの軽微なカスタマイズを許容しつつ利便性の高い運用を可能としている。
つまり、ユーザの操作の利便性や汎用性を高めるため、ユーザの入力制限や操作の制限は可能な限り少なくしている。このため、基本機能は可能な限り活用し、ユーザによる軽微なカスタマイズ(行の挿入・削除やシートの追加・削除・複製など)を認め、また操作予定領域22も可能な限り広く(非表示領域をなるべく少なく)する(シートやセルの操作を許容する)とともに、操作予定領域22においては任意の入力を許容するに構成されている。
しかしながら、表計算ソフトウェア16の場合、ユーザによる情報(値など)の入力、定義情報Sの定義(設定)および例えば出力形式(帳票などの形式)を全てシート内のセルで共用する。このため、入力画面のみとして、あるいは出力帳票のみとしての単独でのカスタマイズが非常に困難となる。具体的には、入力画面の或るセルに対して、会計基本処理プログラム21として定義情報Sが定義されている場合に、所望の入力画面にするためにユーザが不用意に当該セルについて削除や上書きを行うと、定義情報Sが削除され、所望の計算結果が得られないこととなる。このように、ユーザによるカスタマイズがあると、会計処理システム10としての安定性が保証できない。
また、表計算ソフトウェア16は一般的に、自動修正機能を有しているが、当該自動修正機能が有効となるのは或る操作の範囲に限られ、当該範囲を超えたカスタマイズ(行の修正、削除等)があると、あるいは、ユーザが想定していない範囲で機械的に自動修正機能によって修正がなされてしまうと、計算結果の整合性が保たれなくなる問題もある。
そこで、本実施形態では、必要に応じて、操作予定領域22外にある再定義情報R及び再定義マクロを用いて、変更された定義情報Sの更新(再定義)を行うこととした。
これにより例えば、ユーザが、定義情報Sが定義(設定)されているセルに関連する行、列、セル、シートの少なくともいずれかの操作可能対象について操作(追加、削除等)することによって、会計処理システム10に本来想定されている処理が行えない(想定される適切な結果が得られない)状態となった場合であっても、状態更新処理手段17が再定義情報R及び再定義マクロを用いて少なくとも一つのセルに定義情報Sを再定義することによって、操作可能対象を、本来想定されている処理が行える(想定される適切な結果が得られる)状態に戻すことができる。
以下、会計処理システム10の具体例を示しながら更に説明する。なお、会計基本処理プログラム21が実行する会計処理(その計算)の処理内容や構成については、既知の会計処理と同様であるので、以下では主に本実施形態の状態更新処理手段17について、具体例を挙げて説明する。
<会計処理システムのシート>
図12は、本実施形態の会計処理システム10(会計処理プログラム20)で使用する各種シートの一例を示す図である。会計処理システム10では、例えば、経費シート、売上・仕入シート、普通仕訳シート、追加シートと、帳票形式のシートを有している。これらのシートやプログラムは、単一のファイル(ワークブック)内に構成されるとは限らない。これらの全部又は一部を、単一の情報処理端末19内はもちろん、ネットワーク上のコンピュータやストレージ内に格納する構成であってもよい。
経費シート、売上・仕入シート、普通仕訳シートは例えば、少なくとも行挿入が可能(行方向にデータ件数を追加可能)であり縦スクロールバーによって出力手段(ディスプレイ)12上の表示範囲を遷移させることができるリスト形式のシートである。帳票形式のシートは、行挿入が不可能(行方向にデータ件数を追加不可能)で、縦スクロールバーを有さない形式のシートである。帳票形式のシートは、1つの追加シートに対して複数準備され(随時追加も可能)、複数の帳票形式のシートの所定の領域が、串刺し演算によって纏め上げられて追加シートに集約される。
このそれぞれのシートについて、所定の会計処理が実行可能となるように、会計基本処理プログラム21が設定されている。具体的には、各シートのセルに適宜、所定の定義情報Sが定義され、また、会計基本マクロが定義(設定)されている。
さらに、一部または全部のシートにおいて、状態更新処理プログラム23が設定されている。すなわち、再定義情報設定領域25に再定義情報Rが定義され、再定義マクロが定義(設定)されている。
本実施形態では、これらのシートを用いて、従来の手書き帳簿のようにユーザ毎に帳簿組織のカスタマイズ(ユーザ毎の機能追加や変更)を行うことができる。なお、会計処理システム10のシートは、図12に示す例に限らない。
<状態更新処理手段>
図13は、状態更新処理手段17の概要を示す図である。同図(A)に示すように、状態更新処理手段17は、例えば、会計処理システム10の起動時や会計基本処理プログラム21の実行時など任意のタイミングでセルの定義情報Sを更新する第1状態更新処理を行う第1状態更新処理手段171と、あるセルに定義されている定義情報Sが変更された場合にこれを修復する第2状態更新処理を行う第2状態更新処理手段172と、定義情報Sが定義されているセルに対する変更の状態(変更された値)に応じて第3状態更新処理を行う第3状態更新処理手段173と、複数のシートに亘る処理においてシートの操作がされた場合の第4状態更新処理を行う第4状態更新処理手段174を有する。
<状態更新処理手段/第1状態更新処理手段(第1状態更新処理)>
同図(B)、同図(C)を参照して、第1状態更新処理手段171について説明する。
第1状態更新処理手段171は、基本機能としての自動修正機能はそのままに、行・列等の操作がされた後であっても、セルの内容が変更された場合に任意のタイミングでセルの定義情報Sを更新することにより、会計基本マクロが実行する会計処理の整合性を維持する手段であり、例えば、会計基本マクロ内で状態更新処理を実行する。これにより、会計処理システム10の起動時や、会計基本処理プログラム21の処理中、ユーザの操作があった場合など任意のタイミングにおいて、会計基本マクロが参照するセルに所定の定義情報S(例えば、デフォルトの演算式など)を再定義(再設定)するように構成されている。
これにより、ユーザが行・列の操作を行った場合において会計基本マクロが参照するあるセルの定義情報Sが変更された場合であっても、ユーザによる操作がない場合と同様に、整合性のとれた定義情報Sが参照されるように構成されている。
[列毎の状態更新処理]
まず、同図(B)、同図(C)を参照して列毎の状態更新処理を説明する。これらは列毎にセルの定義情報Sを更新することにより、会計基本マクロの処理の整合性を維持する方法を説明する例であり、ユーザが列を操作したことによって自動修正機能が働き、セルの内容が列方向にずれる場合の一例を示している。
同図(B)上段に示すように、会計基本マクロの処理の一部として、例えば「タイトル3」列の2017/10/2行(「D4」アドレスのセル)に対して例えば「タイトル1」列の2017/10/2行の値と、「タイトル2」列の2017/10/2行の値の和を求める(アドレスB4の情報とアドレスC4の和を求める」という目的で、「=B4+C4」という定義情報S(演算式)が文字列で定義(設定)されているとする。
この場合、ユーザがC列に列の挿入を行うと、同図(B)下段に示すようにC列以降の列が右に一列移動する。このとき、表計算ソフトウェア16の自動修正機能によって、C列以降の列のセルの内容(定義情報S)も修正され、例えば、「E4」のアドレスのセルの内容が「=B4+D4」に変更される(以下、セルのアドレスについては行・列の記載のみとし「アドレス」との記載を省略する)。つまり、列の挿入があっても、自動修正機能によって、「E4」セルの内容は、「タイトル1」列の2017/10/2行の値と、「タイトル2」列の2017/10/2行の値とが合算されるように修正され、列挿入前の値が維持される。
ここで、同図(B)上段において各セルの保護がされておらず、ユーザによる任意の入力が可能となっている場合、「D4」セルの内容がユーザによって意図せず他の値に上書きまたは削除されることがある。そのような場合に「D4」セルを自動で元の状態に戻す手段として、同図に示すように「「D4」セルに「=B4+C4」を書き込む」という命令を少なくとも含む修復マクロ(再定義マクロ)を準備することが考えられる。
しかしながら、この修復マクロでは同図(B)下段に示すように列挿入がされた後においては、本来修復すべき「E4」セルではなく「D4」セルの書き込みを行ってしまう。つまり、修復対象のセルに直接再定義を行うような修復マクロでは、行や列の操作がされた後の修復には対応することができない(列挿入があった場合には、修復マクロの定義を挿入後の状態で書き換える必要がある)。
そこで、本実施形態では、第1状態更新処理手段171によって、ユーザによる行・列等の操作がされた後にセルの修復をする場合であっても、本来修復すべきセルの状態を更新し、予定通りの結果(所定の結果)が得られるように修復することとした。
具体的には、同図(C),同図(D)に示すように、第1状態更新処理手段171は、列方向の定義情報生成欄27に含まれるセルを再定義する再定義情報Rと再定義マクロを有している。この再定義情報Rは、操作予定領域22以外の再定義情報設定領域25に設定される。再定義情報設定領域25は、ここではタイトルが定義される行(この例では2行目)より上の行(この例では1行目)に設けられる。タイトルが定義される行よりも上の行(外側の領域)に再定義情報設定領域25を設けることで、ユーザが不用意に再定義情報Rを操作(変更)することを防止できる。なお、タイトルが設定される行および再定義情報設定領域25が設けられる行はこの例に限らず、例えば、タイトルを5行目に設定し、再定義情報設定領域25を2行目に設定してもよい。
再定義情報Rの値は、定義情報生成欄27のセル(すなわち修復対象となるセル)に複写(コピー)された結果、当初定義されていた定義情報Sの値と同一になるような値である。また、再定義マクロは、「修復対象のセルが存在する列の再定義情報設定領域25に設定されている再定義情報Rを、同じ列の定義情報生成欄27のセル(すなわち修復対象のセル)に複写する」という命令を少なくとも含み、これを実行するマクロである。
例えば、同図(C)に示す「D4」セルの内容(値)が同図(B)上段と同様に「=B4+C4」と定義されている場合、D列の再定義情報Rは「=B1+C1」とする。そして、ユーザの操作によって「D4」セルの内容が削除され、その後に「D4」セルを元の状態に戻したい場合は、再定義マクロによって再定義情報Rと同列の定義情報生成欄27のセル(この例では「D4」セル)に複写する。そうすると表計算ソフトウェア16の自動修正機能が働いて、「D4」セルの内容(値)が「=B4+C4」に定義(再定義)される。
また、同図(C)の状態からユーザがC列に列の挿入を行うと、同図(D)に示すように、C列以降の列が右に一列移動する。このとき、表計算ソフトウェア16の自動修正機能によって、再定義情報Rおよび定義情報生成欄27もE列に移動し、再定義情報Rの内容(値)も「=B1+D1」に修正される。
その後に、ユーザの操作によって「E4」セルの内容が削除され、その後に「E4」セルを元の状態に戻したい場合は、再定義マクロによって「E1」セルの再定義情報Rを、同列の定義情報生成欄27のセル(この例では「E4」セル)に複写する。そうすると表計算ソフトウェア16の自動修正機能が働いて、「E4」セルの内容(値)が「=B4+D4」に定義(再定義)される。エクセル(登録商標)でのセルの表記は、R1C1形式、A1形式の二種類がある。ここでは、セルの表記を「A1形式」で表記している。R1C1形式でも同じことは表記できるが、省略する。
このように、第1状態更新手段171は、ユーザによる列方向の操作がされた後に会計基本処理プログラムによって定義された定義情報Sがユーザによって変更された場合であっても、当該変更されたセルに対して、会計基本処理プログラム21が想定する予定通りの結果が得られるように)当該変更があったセルに定義情報Sを再定義することができる。
このように、本実施形態の状態更新処理手段17は、表計算ソフトウェア16の自動修正機能も活用しつつ、会計基本マクロ内でセルを参照する場合の、計算結果の整合性を保つように構成されている。
また、この例では列方向の再定義情報設定領域25を2行目(同図(C)では「D2」セル)に設定しているが、再定義情報設定領域25は操作予定領域22の外側領域であって、ユーザが不用意に操作しない領域に設定すればよく、2行目に限らない。また、再定義情報設定領域25は、定義情報生成欄27と異なる列に設ける構成でもよい。
また、会計基本マクロと状態更新処理マクロとは完全に別体に構成されているものに限らず、会計基本マクロにおいてセルを参照する際に、再定義情報Rや再定義マクロを含めて(再定義した状態で)対象となるセルを参照する場合もある。つまり会計基本マクロ内に再定義マクロの少なくとも一部が記述される場合もある。なお、再定義情報Rおよび再定義情報設定領域25は、列方向に複数設けられても良い。
このように、列方向の再定義情報Rは、再定義情報設定領域25が設けられたそれぞれの列の所定の定義情報生成欄27(行方向に1又は複数並ぶ)に適用される定義情報Sを再定義(初期設定の場合もある)するための情報(例えば、演算式など)である。
以上、列の挿入の場合について説明したが、列の削除がされた場合も同様である。また、再定義情報Rとしてセルのアドレスを含む演算式を定義する場合、セルの参照は処理内容に応じて、相対参照であっても絶対参照であってもよい。さらに、再定義情報Rは、関数や固定値、文字列等であってもよい。
[行毎の状態更新処理]
図示は省略するが、第1状態更新手段171は、行毎にセルの定義情報Sを更新することにより、会計基本マクロの処理の整合性を維持することもできる。
この場合、操作予定領域22の外側領域(例えば2列目など)に、行方向の再定義情報設定領域25を設定し、行方向の再定義情報Rを定義する。行方向の再定義情報Rは、再定義情報設定領域25が設けられたそれぞれの行の所定の定義情報生成欄27(列方向に1又は複数並ぶ)に適用される定義情報Sを再定義(初期設定の場合もある)するための情報(例えば、演算式など)である。
第1状態更新処理手段171は、行方向の再定義情報Rと再定義マクロによって、参照対象セルの状態を更新する。すなわち、例えば会計基本マクロによって、あるセルを参照する場合には、この参照の前に(会計基本マクロ内で)行方向の再定義情報Rを用いる再定義マクロを実行する。この場合の再定義マクロは、「修復対象のセルが存在する行の再定義情報設定領域25に設定されている再定義情報Rを、同じ行の定義情報生成欄27のセル(すなわち修復対象のセル)に複写する」という命令を少なくとも含み、これを実行するマクロである
なお、あるセル(基準となるセル)において、行方向および/または列方向に隣接するセルを参照する場合には、基準となるセルと、当該基準となるセルからの移動位置(行、列)を指定する関数(エクセル(登録商標)の場合は、OFFSET関数))を用いて再定義情報Rを定義するとよい。OFFSET関数によれば、ユーザによる行・列の操作がされた場合であっても、その影響を受けずに隣接するセルを参照することができる。
第1状態更新処理手段171は、会計処理システム10のいずれのシートにおいても状態の更新が可能である。すなわち、第1状態更新処理手段171による第1状態更新処理は、本実施形態における状態更新処理の基本的な概念であり、第2状態更新処理手段172~第4状態更新処理手段174では、セルやシートの修復の状況に応じて、上述した第1状態更新処理を利用した処理を行う。また、本実施形態の会計処理システム10では、以下に説明する第2状態更新処理手段172~第4状態更新処理手段174における状態更新処理以外に限らず、セルの修復において第1状態更新処理手段171による(これを利用した)状態更新処理を行う場合もある。
また、状態更新処理手段17による状態更新処理を行うためのシート(セル)の各種設定も、状態更新処理手段17の一部である(以下同様)。
<状態更新処理手段/第2状態更新処理手段(第2状態更新処理)>
図14から図16を参照して、第2状態更新処理手段172について説明する。第2状態更新処理手段172は、あるセルに定義されている定義情報Sが変更された場合に、当該セルの変更内容によらずこれを修復する第2状態更新処理を行う手段である。第2状態更新処理の対象となるシートは、例えば、経費シート、売上・仕入シート、普通仕訳シート、追加シート(図12参照)の少なくともいずれかである。なお、本実施形態で説明するシートは一例であり、これ以外のシートがあってもよい。
第2状態更新処理手段172は、例えば、セルの値が変更された場合のイベント(例えば、エクセル(登録商標)ではChangeイベント)、又は他のシートへ移動する(それまでアクティブだったシートを非アクティブにする。)時に発生するイベント(例えば、エクセル(登録商標)ではDeActivateイベント)を契機として、定義情報Sが定義されているセルの一部又は全部を再定義する第2状態更新処理を行う。
また、第2状態更新処理手段172は、操作予定領域22内のある範囲の特定のセルについて、その状態を更新する。詳細には、予め状態更新の対象となる或るセルの範囲に所定の名前(エクセル(登録商標)では「セル範囲名」)を付しておき、セル範囲名が付された範囲のセルについてセル入力、情報の貼り付け、クリア、切り取りなどをした場合(このような場合に、Changeイベントが発生する。以下「Changeイベント発生時」と呼ぶ)、または他のシートへ移動する場合(このような場合に、DeActivateイベントが発生する。以下「DeActivateイベント発生時」と呼ぶ)に、当該セル範囲名のセルについて状態更新処理を行う。
図14、図15を参照して具体的に説明する。両図はいずれも一例として経費シートを示している。この例では、予め、図14(A)に示すように、2行目の、4、5,6,7,10列に「nソート列」というセル範囲名を付し、これらを再定義情報設定領域25としてそれぞれに所定の再定義情報Rを定義する。また、セル範囲名を付した列以外の列(例えば8列目)の33行~4999行に「n年月」というセル範囲名を付している。なお、この例では、セル範囲名「n年月」のセル範囲はこの例に限らず、行挿入や行削除により変動する。
そしてセル範囲名「nソート列」の列と「n年月」の行で特定される同図(B)の破線で示す範囲(例えば、4、5,6,7、10列の33行~4999行)が、第2状態更新処理の対象範囲となる。なお、同図の例ではシート中の2行~31行および、3列、4列、7列の範囲は会計処理システム10の管理用エリアとして、ユーザにおける運用時には非表示となるエリアである。
第2状態更新処理は、再定義マクロによって以下の手順で行う。
[Changeイベント発生時]
まず、再定義マクロは、Changeイベントの発生の契機となった操作がされた1または複数のセルが含まれるセルを取得し、変更されたセルが第2状態更新処理の対象範囲に含まれるか否かを判断する。
例えば、図15(A)を参照して、第2状態更新処理の対象範囲のうち、太線で示すセルの内容を削除(クリア)したとする。太線で示す領域の6列、7列、10列は全て第2状態更新処理の対象範囲に含まれるため、この太線で示す領域の6列、7列、10列のセルが、第2状態更新処理の対象となるセル(修正対象セル)となる。再定義マクロは、当該修正対象セルを取得し、状態の更新(セルの定義情報Sの再定義)を行う。第2状態更新処理では、修正対象セルが1つ以上あれば状態の更新を行い、修正対象セルがない場合には、この処理を終了する。
再定義マクロは、修正対象セルを列ごとに分割し、一列ずつ、当該列の再定義情報設定領域25(この例では6列の2行目、7列の2行目、および10列の2行目)に設定されている再定義情報R(例えば、正常な関数や演算式など)を、当該列の修正対象セルに順次上書きし、修正対象セルの状態を更新(定義情報Sに書きかえ)する。再定義マクロは、一列の状態更新が終了したら次の列の状態更新を行う。
第1状態更新処理において説明したように、操作予定領域22の外側にあり、ユーザが操作する際に通常は非表示となっている再定義情報設定領域25に定義されてる再定義情報Rを修正対象セルに上書きすることによって、修正対象セルの内容を会計基本マクロで想定されていた内容(定義情報S)に修復することができる。また、修正対象セルが関連する行操作(行挿入や行削除)があった場合でも、会計基本マクロ内でその修正対象セルを参照する場合の、計算結果の整合性を保つことができる(以下の状態更新処理においても同様である)。
このような処理により、例えば同図(B)に示すように、修正対象セルの内容が削除(値のクリア)された場合であっても、同図(C)に示すように、再定義情報Rによって、正常な定義情報S(例えば、正常な関数や演算式など)が修正対象セルのそれぞれに再定義される。
なお、同図(C)の状態では、6列および7列は定義情報Sが再定義され表示されているが、10列は空白となっている。これは、再定義情報Rによって、正常な定義情報Sが再定義された結果によるものである。
例えば、10列の2行目に定義されている再定義情報Rは、以下の演算式である。
「=IFERROR(TEXT(DATEVALUE(INT($H2/100)+1988 &"/"& MOD($H2,100)&"/"&$I2),"aaa"),"")」
この演算式の意味は、「年月日と解釈できる値が与えられたときは、その年月日の曜日を表示し、そうでなければ、空白を表示する」というものである。つまり、同図(C)における10列は、再定義情報Rによって、正常な定義情報Sが再定義されたが、年月日と解釈できる値が与えられなかったために、空白が表示されている。
図16は、行の挿入があった場合の第2状態更新処理の一例を示す概要図である。この場合、第2状態更新処理の対象範囲は、図示のようにセル範囲名「nソート列」のC列からF列と、セル範囲名「n年月」の33行~4999行で特定される範囲とする。
この状態で、ユーザの操作によって101行と102行の間に1行の挿入があった場合、Changeイベントが発生し、102行~4999行が一行ずつ繰り下がり、同図右側に示すように103行~5000行となる。つまり修正対象セルは、新たな102行のC列からF列のセルとなる。
第2状態更新処理では、ある列(挿入行の列)の中に一つでも修正対象セルがあれば、列全体の演算式を更新する。換言すると、Changeイベントを発生の契機となった操作がされた1または複数のセルの演算式を更新する。
そして、Changeイベントの発生により、再定義マクロは、修正対象セルを列ごとに分割し、一列ずつ(C列、D列、E列、F列の順に)当該列の再定義情報設定領域25(この例では2行目)に設定されている再定義情報R(例えば、正常な関数や演算式など)を、当該列の修正対象セルに順次上書きし、修正対象セルの状態を更新(定義情報Sに書きかえる)。再定義マクロは、一列の状態更新が終了したら次の列の状態更新を行う。
[DeActivateイベント発生時]
DeActivateイベント発生時は、第2状態更新処理の対象範囲(例えば、図15(A)の破線の範囲)を列ごとに分割して、一列ずつセルの全数について、各セルの内容を判定する。この判定は、各セルの内容と当該列の再定義情報設定領域25(この例では2行目)に設定されている再定義情報R(例えば、正常な関数や演算式など)とを比較することにより行う。各セルの内容と再定義情報Rの内容が一致している場合は、そのまま次の(下の)セルに移動して順次判定し、当該列の中で1つでもセルの内容と再定義情報Rの内容が不一致のセルが存在した場合は、当該列の再定義情報設定領域25(この例では2行目)に設定されている再定義情報R(例えば、正常な関数や演算式など)を、当該列の第2状態更新処理の対象範囲のセルに順次上書きし、当該列の第2状態更新処理の対象範囲のセルの全てについて状態を更新する(定義情報Sに書きかえる)。再定義マクロは、一列の状態更新が終了したら次の列の状態更新を行う。
なお、ここでは、第2状態更新処理の対象範囲のセルの全数について、その内容を判定する例を説明したが、以下の簡易判定を行っても良い。
簡易判定ではまず、第2状態更新処理の対象範囲のセルの列毎の個数(N1)を把握する。この個数の把握は、例えばエクセル(登録商標)の場合には、「Range.cells.count」プロパティの参照で把握することができる。
次に、数を把握したセルのうち、内容が演算式であるセルの個数(N2)を把握する。これは例えばエクセル(登録商標)の場合には、「Range.SpecialCells(xlCellTypeFormulas).cells.count」プロパティの参照で把握することができる。
そして、列毎に上記(N1)と(N2)の値を比較し、一致していれば正常と判定し、次の列を処理する。一方上記(N1)と(N2)の値を比較し、不一致の場合は、異常と判定し、当該列の第2状態更新処理の対象範囲のセルの全てについて状態を更新(定義情報Sに書き換える)。
第2状態更新処理手段172の更新処理は、特に、対象となるシート・列の数が多く、データ件数も多い一方で、列毎に同じ演算式が定義されているような場合(ユーザの入力を想定していないような場合)の状態更新(セル内容の修復)に有効である。
また、対象となるセルの内容が変更された場合、通常は、Changeイベントのみを契機として、第2状態更新処理を実行すればよい。しかしながら、Changeイベントの発生に代えて、あるいは、Changeイベントの発生に加えて、DeActivateイベントの発生を契機とした第2状態更新処理を行うことにより、セルの状態更新(セルの内容の修復)をより確実に行うことができる。
例えば、会計基本マクロでは、必要に応じて指定されたオブジェクトに対しするイベントの発生の有無を切り替える(フラグを切り替える)場合があり、仮にイベントの発生が無いとされている場合(エクセル(登録商標)では「Application.EnableEvents=False」の状態の場合)に、ユーザがセルを操作(書き換えなど)すると、Changeイベントの発生が判断されない。また、会計処理マクロによるイベントの発生の有無の切り変えが必ず成功しているとは限らない場合もある。
このような場合に、DeActivateイベントの発生を契機として第2状態更新処理を行うことで、セルに対する状態更新(セルの内容の修復)を確実にすることができる。
このように、第2状態更新処理手段172では、対話形式の操作によってユーザにより所定のセルに設定されている定義情報S(例えば関数や演算式など)が意図せず変更(意図しない文字列の上書き、貼付け、切り取り、削除など)がされた場合、再定義情報Rと再定義マクロによって、自動的に変更されたセルに定義されていた(所定の)定義情報Sを上書きするものである。
なお、上記の例では、経費シートを例に説明したが、売上・仕入シート、普通仕訳シート、追加シートについても、それぞれ例えば、nソート列の範囲(例えば、売上・仕入シートでは2行目の第3列~第6列など)や、n年月の範囲(例えば、、売上・仕入シートでは第4行~第252行など)などがそれぞれに応じて異なる以外は、同様の方法で状態更新処理を行うことができる。
<状態更新処理手段/第3状態更新処理手段(第3状態更新処理)>
次に、図17を参照して第3状態更新処理手段173について説明する。第3状態更新処理手段173は、定義情報Sが定義されているセルに変更があった場合に、変更後のセルの状態(値)に応じて第3状態更新処理を行う手段である。
第3状態更新処理の対象となるシートは、主に、売上・仕入シート(図12参照)であり、同図(A)~同図(D)は売上・仕入シートを示しているが他のシートであってもよい。
第3状態更新処理手段173は、例えば、Changeイベントの発生や、DeActivateイベントの発生を契機として、定義情報Sが定義されているセルの一部又は全部を再定義する第3状態更新処理を行う。
この場合も、予め状態更新の対象となる或るセル(例えば、定義情報Sとして演算式や関数が定義されているセル)の範囲に所定のセル範囲名を付しておき、セル範囲名が付された範囲のセルについてセル入力、情報の貼り付け、クリア、切り取りなどが行われ(Changeイベントが発生し)た場合、または対象シートから他のシートに移動する(DeActivateイベントが発生した)場合に、当該セル範囲名のセルについて状態更新処理を行う。
つまり、まず第2状態更新処理の場合と同様に、列方向のセル範囲名が付された列と行方向のセル範囲名が付された行とで特定される第3状態更新処理の対象範囲を決定し、Changeイベントを発生の契機となった操作がされた1または複数のセルが含まれるセル範囲を取得して変更されたセルのうち、第3状態更新処理の対象範囲に含まれるセルを、修正対象セルとして特定する。第3状態更新処理では、修正対象セルが1つ以上あれば状態の更新を行い、修正対象セルがない場合には、この処理を終了する。
再定義マクロは、修正対象セルを列ごとに分割し、一列ずつ、セルの内容を判断し、セルの内容に応じて当該列の再定義情報設定領域25(例えば、2行目)に設定されている再定義情報R(例えば、正常な関数や演算式など)を、当該列の修正対象セルに順次上書きし、修正対象セルの状態を更新する(定義情報Sに書きかえる)。再定義マクロは、一列の状態更新が終了したら次の列の状態更新を行う。
ここで、第3状態更新処理では、以下の判定基準(ケース1~5)により操作がされたセルの内容を判断し、その内容が「異常」と判断された場合に、当該セルの内容を再定義情報Rで再定義する。
[ケース1]操作がされたセルの内容が「空白」の場合(ユーザによってスペースキーが押された場合など)→判定は「異常」
[ケース2]操作がされたセルの内容が無い場合(ユーザによって削除(Delete)キーが押される、あるいはセルが切り取られるもしくは行挿入が行われた場合など)→判定は「異常」
[ケース3]操作がされたセルに空白以外の固定値(定数)が入力されている場合(ユーザによるキーボード操作による入力があった場合あるいは、値の貼り付けがあった場合など)→判定は「正常」
[ケース4]操作がされたセルに演算式が入力されていて、その演算式が再定義情報設定領域25に設定されている再定義情報Rと一致する場合→判定は「正常」
[ケース5]操作がされたセルに演算式が入力されていて、その演算式が再定義情報設定領域25に設定されている再定義情報Rと不一致の場合→判定は「異常」
すなわち、第3状態更新処理では、定義情報Sが設定されているセルにユーザによって空白以外の定数が入力され、その入力によって予め定義された定義情報Sが失われた場合であっても、ユーザの入力した定数を許容する(正常なものとして扱い、再定義を行わない)。一方で、それ以外の入力については、予め定義された定義情報Sと一致する場合を除き、異常な値の入力と判定して定義情報Sの再定義を行う。
また、DeActivateイベント発生時も、第2状態更新処理手段172の場合と同様に、第3状態更新処理の対象範囲を列ごとに分割して、一列ずつセルの全数について、各セルの内容と当該列の再定義情報設定領域25に設定された再定義情報Rとを比較し、不一致のセルに再定義情報Rで再定義(正しい演算式等を上書き)する。
なお、この場合、取得するセルの種類を指定し、指定された条件を満たしているすべてのセルのセル範囲を簡便に取得する方法(例えば、エクセル(登録商標)の場合は、Rangeオブジェクトを返す「Range.SpecialCells」等のプロパティ・メソッド・関数、マクロ等)を利用してもよい。このような方法を利用することで全数の判定ではなく、指定された条件を満たすセル(例えば、この場合定数が入力されているセル)のセル範囲が戻されるため、処理を高速にすることができる。
図17を参照して具体的に説明する。ここでは、例えば、18列と20列の132行目以降が修正対象セルであり、初期状態で定義情報Sに基づく値が設定されるほか、ユーザによる固定値の入力は受け付けるものとする。つまり、図示は省略しているが、18列と20列の再定義情報設定領域25(例えば、2行目など)に所定の再定義情報Sが定義されている。
同図(A)に示す初期状態では、140行目において20列(「入金」の項目)のセルの値は、定義情報Sによって「23,717」となり、18列目は空白となっている。
この場合、同図(B)に示すように、140行目20列のセルの値をユーザが、「23,217」に修正し、18列のセルの値を「500」に修正すると、上述の判定基準「ケース3」によって、この値の入力を受け付ける(許容する)。
一方、同図(C)に示すように、140行目20列のセルの値をユーザが、例えば削除する(Deleteキーが押される)と、上述の判定基準「ケース2」によって、「異常」と判定され、再定義情報設定領域25(ここでは不図示の20列目の例えば2行目など)に設定されている再定義情報Sが再定義マクロによって140行目20列のセルに複写され、同図(D)に示すように初期状態の値が再定義される(セルの内容を表示する表示欄CN参照)。
このような処理により、例えば、同図(A)に示す初期状態から、例えばユーザによって、同図(B)に示すように、第3状態更新処理の対象範囲に含まれるセル(例えば、18列140行と20列140行のセル)に数値(金額などを示す数値)が入力された場合には、当該値を正常なものとして処理し、同図(C)に示すように削除または空白等が入力された場合には、同図(D)に示すように所定の演算式や関数などに修正することができる。
特に会計処理システムにおいては、或る項目(セル)についてユーザによる数値(金額等)の入力を認めることで、シートの内容が分かり易く(明確)になる場合も多くある。このような場合入力された数値を正常として認めることで、ユーザが意図的に固定値を入力したい場合にはそれを維持し、あるいは演算式を維持したい(当初の演算式に戻したい)場合には、所定の演算式を再定義するなどの運用が可能となり、ユーザの利便性を格段に高めることができる。
なお、第2状態更新処理と、第3状態更新処理は類似する処理であるが、以下の点において異なる。
まず、第2状態更新処理は、再定義の対象となる全てのセルに再定義情報Rをコピーする。これに対し、第3状態更新処理では、ユーザによって固定値(定数)が入力された場合には、再定義情報Rのコピーは行わない。
また、会計処理システム10の場合、第2状態更新処理は、処理対象として好適なシートは経費シート、売上・仕入シート、普通仕訳シート、追加シートであり、それぞれに異なる第2状態更新処理の対象範囲(行方向のセル範囲名と列方向のセル範囲名で特定される対象範囲)が設定される。これに対し、第3状態更新処理の処理対象として好適なシートは主に売上・仕入シートである。そして、例えば同じ売上・仕入シートであっても、第2状態更新処理の対象範囲と第3状態更新処理の対象範囲は異なる範囲である。
また、第2状態更新処理の対象範囲と第3状態更新処理の対象範囲のセルの数で比較すると、第2状態更新処理の対象範囲の方が大幅に多い。
また、第2状態更新処理では、再定義をする場合(全数処理の場合)には、列単位で全数を再定義(上書き)するが、第3状態更新処理では、固定値の入力を許容するため、列単位でセルを個別に判定し、選択的に再定義(上書きする)を行う。
なお、ユーザの入力がされない列(例えば、ソートキー列)にも、演算式は入っているが、そのような列はソートキー等としての管理目的に用いる。ユーザの入力には、金額のほか、勘定コード、勘定科目、得意先名、摘要などの文字情報や日付・時刻、その他のコード、フラグなどもあり、これらを編集・表示する演算式も、本実施形態の状態更新処理(セルの定義情報Sを修復する処理)の対象となる。
<状態更新処理手段/第4状態更新処理手段(第4状態更新処理)>
次に、図18~図26を参照して第4状態更新処理手段174について説明する。第4状態更新処理手段174は、複数のシートに亘る処理においてシートの操作がされた場合の第4状態更新処理を行う手段である。
会計基本処理プログラム21には、複数のシートに亘る処理が含まれる。複数のシートに亘る処理とは例えば、一のシート中のセルに定義されている定義情報Sから他のシート中のセルに定義されている定義情報Sを参照したり、複数のシートにおいて同じ領域(アドレス)に存在するセルの定義情報Sを串刺しで演算するなどの処理である。表計算ソフトウェア16の基本機能では、このような複数のシートに亘る処理を行う際に、シートの追加や差換えがあると、当該シートを参照できない場合があり、会計処理システム10としての信頼性に欠ける場合がある。第4状態更新処理手段174は、会計基本処理プログラム21において複数シートに亘る処理を行う際にシートの追加または差換えの操作があった場合において、当該追加又は差換えのあったシート(特に参照の対象とすべきシート)をもれなく参照の対象とするように、第1状態更新処理手段171による第1状態更新処理も一部に利用しつつ、操作可能対象の状態を更新する。
まず、追加・差換えのシートを参照するためには、シート名の指定によって指定されたシートを参照の対象となるように特定し、当該シートの名称を取得し、ワークシート上(参照する側のシート上)に定義された演算式(会計基本マクロや再定義マクロに既述された演算式)等から参照可能な形式で保存する必要がある。第4状態更新処理手段174では、これらの処理を連続して自動的に行うように構成されている。
シート上のセルを、演算式から参照・特定するための記述方法には、シート名やアドレスを「文字列」として記述する方法とシート名やアドレスを「文字列式」として記述する方法がある。
前者は、参照するシートのセルに参照されるセルのシート名やアドレスを記載するにあたり、演算式に直接記述する方法であり、シート名やアドレス参照は「文字列」として記述しなければならない。このため、参照される対象のシートを別のシートに変更したい場合、参照するシートにある演算式を手作業で書き直す必要がある。そのため、シートの追加や差し換えが必要な場合には、多大な労力を必要とする。また、マクロを用いて当該作業を自動化することも可能であるが、マクロが複雑となり実用性が低い。
一方後者は、演算式内に参照すべきセルを間接的に指定するための関数を用いる。例えばエクセル(登録商標)の場合は、Indirect関数を記述し、関数の引数としてシート名とアドレスを記述する方法である。この場合のシート名やアドレスは、セル参照や関数を含む文字列式によることができる。一例を挙げると、「=Indirect(A1&"!C3")」のような演算式を定義し、「A1」セルに参照されるシートのシート名を書き込めば、任意のシートの「C3」セルの値を参照できる。この場合、「A1&"!C3"」の部分が文字列式となっており、「A1」セルに参照される側のシート名を書き込むマクロを設定すれば、当該マクロを含む一連の流れの中で動的に参照される側のシートを変更できる。
参照される側のシートのシート名は、セルに文字として入力する方法の他、GUIを活用して画面上に表示された選択肢から選ぶような簡便な指定方法でもよい。例えば表計算ソフトウェア16の選択肢を表示する機能としてドロップダウンリスト等のツールを用いてもよい。
また、オウン・コードによりGUI画面を定義し、参照される側のシートを一括で差換えたり、戻したりの管理ができる機能を持たせてもよい。その場合、図示は省略するが、例えば、参照する側のシート(損益計算シート、日別残高シートのいずれか)で、ユーザが「A1」セルをダブルクリックすると、GUI画面が現れる。GUI画面にはドロップダウンリストが2つ定義されており、それぞれ、経費、売上・仕入(これらが主に、差換え機能の対象となる)の二つのシートの参照すべき版(例えば、最新版)を選ぶ機能を担っている。ユーザがドロップダウンリスト(例えば「経費」)をクリックすると、ブックレベル範囲名「g経費」を持つシートのシート名が先頭に、シートレベル範囲名「g経費」を持つシートのシート名が、それに続いて一覧で表示される。ユーザが参照したい版のシート名を選ぶと、GUI画面から起動されるマクロが損益計算シート、日別残高シートの両方のシートの参照先シート名欄30に、選択したシートのシート名を複写する。
この方法によれば、ユーザによってシート名が変更された場合や、新規にシートが追加された場合、あるいは他のファイル等から移植したシートを参照したい場合も、それらを一連の手順として可能となる。
そこで、本実施形態ではシート名の指定によって指定されたシートを参照・特定する方法として、シート名を「文字列式」として記述し、参照されるシートを再定義マクロで動的に指定する方法を採用した。
次に、シートを特定する方法について説明する。表計算ソフトウェア16の基本機能として、シートを特定する方法は例えば、参照するシート名の指定による方法、参照するシートのシート・タブが左から数えて何番目に位置するかを指定する方法、CodeNameによって指定する方法、シート中に特定のオブジェクト(目印)を設けることによって指定する方法などがある。
本実施形態では、マクロ内で動的にシート名を指定するために、シート中に特定のオブジェクト(目印)を設けることによって指定する方法を採用する。この方法によれば、シートの追加時および差し換え時に、特段の操作をしなくても、追加・差し換えされたシートを参照でき、また、ユーザがシート名を変更した場合であっても、同じシートを参照し続けることができる。
そして、シート中に特定のオブジェクトを設ける方法としては、セル範囲名やコメントを用いる方法、特定のセル(例えば、「A1」セルなど)に特定の文字を定義する方法、あるいは特定のセルの書式を特定の形(例えば、罫線の色指定)にする方法などが挙げられる。本実施形態では、ユーザの不用意な操作があっても影響が及びづらく、マクロの定義が比較的単純であるという理由から、オブジェクトとしてセル範囲名を採用することとした。
すなわち、第4状態更新処理手段174では、参照される側のシートの特定とそのシート名の取得を、以下の方法により行う。
参照される側のシートを特定するには、当該シートの1または複数のセルにセル範囲名を設定し、これを利用する。例えば、一のシートから他のシートを参照する際、参照される側のシートに差し換えがあった場合に参照される側のシートを特定するには、参照される側のシートに特定のセル範囲名を設定する。シートの新旧で差換える場合、一般的には当該シートを複写して名称を変更する。つまりこの場合、名称の異なる経費シートが複数存在することになる。このような新旧の経費シートから、目的となる一つを特定するために、本実施形態ではブックレベルでのセル範囲名を利用する。
具体的には、例えば、経費シートを参照される側のシートとした場合、経費シート内の1または複数のセルに例えば、「g経費」という名称のセル範囲名を設定する。そしてセル範囲名「g経費」が設定されている経費シートが最新の経費シートであるとして参照の対象とする。シート差し換えは一のシートを特定するため、この場合にはブックレベルでのセル範囲名を利用する。
また、例えば、串刺し演算(集計)の場合には、対象シート内の1または複数のセルに「n経費」という名称のセル範囲名を設定し、当該セル範囲名を用いて串刺し演算(集計)の対象シートを特定する。串刺し演算は複数のシートを対象にするため、この場合にはシートレベルでのセル範囲名を利用する。この範囲名はシートに属するオブジェクトと見ることができ、シートの複写時にはシートと同時に複写される。その性質を利用し、ブックレベル範囲名と合わせて、シートを特定する目印に使用している。
ここで、「セル範囲名」について説明する。「セル範囲名」は既述のとおり、セル参照を素早くするために設定する名称(文字列)であり、1又は複数の範囲のセルと紐づけることができる。セル範囲名とセルを紐づけし、当該セルをアドレスではなくセル範囲名で参照することによって、列や行の追加・削除があっても、マクロや演算式の修正が不要となる。
また、エクセル(登録商標)の「セル範囲名」には参照可能な範囲(変数の適用範囲、スコープ、有効範囲)の広さの違いで、次の種類がある。
・マクロと、ブック(ファイル)内の全てのシート内の演算式から参照可能なもの(これを以下の説明では「ブックレベル範囲名」と称する)。
「ブックレベル範囲名」は、シート名の指定のみでシートを跨いだセル参照ができるため、本実施形態ではセルの指定のほか、シートを指定する場合にも応用している。
・マクロと、単一のシート内の演算式(参照元シートと参照先シートが同一の場合に限る)から参照可能なもの(これを以下の説明では「シートレベル範囲名」と称する)。
「シートレベル範囲名」は、その範囲名の紐づけされたセルのあるシート内の、全ての演算式から参照できる。つまり、基本的にシート内での演算に活用すべきものだが、シート名の指定を付加してこれを指定すれば、シートを跨いだセル参照もできる。本実施形態ではこれを、シート内でのセル指定を簡便に行うために使用している。
なお、上記の「ブックレベル範囲名」および「シートレベル範囲名」の他に、マクロと、単一のシート内の演算式(参照元と参照先が異なる)から参照可能なものもあるが、これについては本実施形態では利用していないため、説明を略す。
なお、本実施形態における「シートレベル」は例えば、「モジュールレベル」、「局所レベル」、「ローカルレベル」等と捉えることもでき、「ブックレベル」は例えば、「パブリックレベル」、「大域レベル」、「グローバルレベル」等と捉えることもできる。
また、本実施形態では、「範囲名の定義」と記載しているが、これは「名前付きセル範囲の定義」ということもできる。
具体的に、エクセル(登録商標)の機能として、シートを表示した状態で対話型UI(ウィンドウ表示)を利用してセル範囲名を定義すると、「Thisworkbook.Names」オブジェクト(「Thisworkbookオブジェクトの直下のNamesオブジェクト)にセル範囲名の一覧が保存される。セル範囲名の定義のためには、エクセル(登録商標)には名前ボックスNBなどのGUI画面が提供されているが、セル範囲名の定義や削除を一連の流れとして行うには、専用の画面を作る(オウン・コード)とよい。
その場合、図示は省略するが、参照する側のシート(損益計算シート、日別残高シートのいずれか)の「A1」セルを、ユーザがダブルクリックすると、GUI画面が現れる。GUI画面には現在ファイル内に定義されている範囲名(参照先セルの属するシートのシート名と範囲名の併記)と、「ブックレベル・シートレベル」の区別をするチェックボタンが、一覧として表示されている。範囲名が多数の時は、縦スクロールバーも現れる。ユーザが範囲名を選択し、その範囲名の隣のチェックボックスをOFFからONに変更すると、GUI画面から起動するマクロがその範囲名をブックレベルに変更する。同名の範囲名があるときは、選択されていない同名の範囲名は皆シートレベルに変更する。ユーザが範囲名を選択し、その範囲名の隣のチェックボックスをONからOFFに変更すると、GUI画面から起動するマクロがその範囲名をシートレベルに変更する。
ブックレベル範囲名を定義した場合、NamesオブジェクトのNameプロパティの値としてにはブックレベル範囲名のみが設定されるが、これにシート名は含まれない。参照先のセルは、同オブジェクト内のRefersToプロパティに、「シート名+アドレス」の形式で記述することにより紐づけされる。
一方、シートレベル範囲名を定義した場合、NamesオブジェクトのNameプロパティの値としてシート名が含まれる。参照先セルは、同オブジェクト内のRefersToプロパティに、「シート名+アドレス」の形式で記述することにより紐づけされる。
そして、ブックレベル範囲名は、1つのブックにつき1個のみ設定でき、別のシートにあってもそのセル範囲名で指定できるという、ブック全体に通用するセル範囲名となる。一方、シートレベル範囲名は、当該シートのみで有効なセル範囲名であり(シート内で一個ずつ同名のものを定義でき)、ブック内ではシートの数と同数、これを定義できる。また、異なるシートに同じセル範囲名を設定することができる。そしてブックレベル範囲名と、同名のシートレベル範囲名は、同一シート内では同時に定義することはできない。
このようにして第4状態更新処理では、シートを特定可能とし、表計算ソフトウェア16の基本機能によって特定したシートを取得する。
次に、特定したシート名を、演算式から参照可能な形で保存する方法(先に説明したIndirect関数に引数として、シート名を与える方法)ついては、シート名をセルに値として書き込む方法を採用する。また本実施形態では、特定したシート名の保存をする場合、参照される(データを保管している)側のシートのセルに保存する方法と、シート名を保存するための特別のシートを定義する方法を採用する。これらは、シートの操作内容によって選択される。すなわち、一のシートから他のシートを参照している環境において、参照される側のシートを(例えば、新旧で)差換える(そのために参照される側のシートが複数存在する)場合には、シート名を参照される側のシートにセルの値として保存する方法が選択される、また、複数シートの串刺し演算処理の場合にはシート名を保存するための特別のシートを定義する方法が選択される。
なお、シート名の保存方法は、これに限らず、例えば、参照する(データを活用する)側のシートにセルの値として保存する方法、や、セル範囲名のリスト(Namesオブジェクト)に書き込む方法、セル範囲を与えるとそのセルの属するシート名を返す仕組み(関数、プロパティ、ユーザ定義関数、マクロなど)を利用する方法などであってもよい。
このように第4状態更新処理では、参照されるシートを、セル範囲名を利用して特定し、特定したシートのシート名を、演算式から参照可能な形で保存する。
次に、参照されるシートを特定する方法や、演算式でのシートの指定方法について具体的に説明する。第4状態更新処理では、以下に説明するシートの構成(設定)を含み、当該構成によって、少なくとも、シートの差し換えの操作がされた場合と、複数シートの串刺し演算の場合に、マクロ内から動的にシートを指定し、参照されるシートの更新をすることができる。以下、この2つの場合について説明する。
[1.シートの差し換え操作がある場合のシートの指定]
シートの差し換え操作とは、一のシートから参照されるシートに例えば新旧の差し換えがあり、そのために類似したシートがファイル(ワークブック)内に複数存在している(新版、旧版の混在など)状態での操作である。
ここでは、参照する側のシート上の演算式から、意図したシートを一意に特定し、そのシートのセルの値を取得する方法を説明する。表計算ソフトウェア16にはシートを一意に特定する方法があるが、その方法では新旧差換えの操作が容易でない。その方法によると、参照する側のシートで全ての演算式を書き換える必要が生ずる。この方法は、新旧差換えを簡便に行うことができ、かつ、シートを一意に特定する手段であるが、この手段によるとユーザがシート名を変更した時には、不具合が生じる。表計算ソフトウェア16の自動修正機能には、ユーザがGUI経由で参照される側のシート名を変更した場合にも、参照されるシートを一意に保つ仕組み(以下「シート参照の維持機能」と呼ぶ)がある。しかし本実施形態における状態更新処理での処理を前提にすると、表計算ソフトウェア16に組み込まれたシート参照の維持機能の対象範囲から外れてしまう。
そのため、第4状態更新処理手段174では、新旧差換えを簡便に行うための機能とともに、それに合わせたシート参照の維持機能を実現している。
図18を参照して、第4状態更新手段174で用いるシート構成、すなわち、参照する(データを活用する)側のシート(例えば、「損益計算シート」)において他のシート(参照されるシート、例えば「経費シート」)のデータを参照するための構成の一例を説明する。同図では、参照する側のシートとして損益計算シート(同図(A))を、参照される側のシートとして経費シート(同図(B)、同図(C))を示している。
同図(B)を参照して、参照される側のシート(例えば、「経費シート」)では以下の設定を行う。まず、参照される側のシート(例えば、「経費シート」)内の任意のセルに「ブックレベル範囲名」を定義しておく。これは、任意のセル(例えば「C2」セルなど)を選択し、名前ボックスNBに名前(例えば「g経費」など)を入力することにより、ブックレベル範囲名として登録される。
ブックレベル範囲名は、ワークブック内のシートの中から、目的のシートを特定するための手段として使用できる。目的のシートを特定する手段としては、一般にはシート名によってシートを特定する方法が多用されているが、それよりも柔軟に目的のシートを特定することができる。
また、参照される側のシートのシート名(自身のシート名)を取得して、シート名のセル(ブックレベル範囲名と紐づけられた「C2」セル)にシート名を上書きするマクロを定義する。当該マクロは、再定義マクロに含まれ、参照される側のシートから他のシートに移動する際に実行される。
つまりブックレベル範囲名「g経費」と紐づけられた「C2」セルは、そのセルの属するシートのシート名が定義されたセル(シート名のセル)となる。
例えば、同図(B)では、「C2」セルの内容は、そのセルの属する「経費シート」のシート名である文字列(シートタブの文字列)「経費」である。そして、同図(C)に示すように、ユーザがこの「経費シート」のシート名を「経費」から「経費2908」に変更し(複写ではなく、シートの名称変更)、他シートの移動をし、再度、経費シートに戻ると、「C2」セルにシート名を上書きする再定義マクロによって「C2」セルの内容が更新される。このシート名を上書きする再定義マクロについては、後に詳述する。
すなわち、再定義マクロは、DeActivateイベントを監視し、DeActivateイベントの発生を契機として、参照される側のシート(例えば、「経費シート」)のシート名(自身のシート名、変更後の「経費2908」)を取得して、シート名のセル(ブックレベル範囲名と紐づけられた「C2」セル)に、取得したシート名を上書きする。これにより経費2908シートの「C2」セルに、変更後のシート名(例えば、「経費2908」)が上書きされる(同図(C))。なお、この場合、「C2」セルは、例えば2行目の全体を非表示にするなどし、ユーザによる不用意な更新がされないようにしておく。
同図(B),同図(C)に示すように「C2」セルを紐づけている範囲名は、ワークブック内で一意のブックレベル範囲名「g経費」である。ブックレベル範囲名が付されているシートは、シート名の変更時には、「g経費」と紐づけられた「C2」セルの内容(値)のみが変更される。すなわちここでは文字列「経費」が「経費2908」に変更される。
一方、参照する側のシート(例えば、「損益計算シート」)におけるデータの参照では、同図(A)に示すように、参照される側のシートのシート名を定義(入力、表示)する参照先シート名欄30を設ける。また参照するデータについては、参照先シートで参照すべきセルを間接的に指定するための関数を用いて特定する。
例えば、同図(A)に示すように、参照する(データを活用する)側のシートの任意のセル(例えば、「K5」セル)などを、参照される側のシート名を定義する参照先シート名欄30とする。
そして、参照先シート名欄30には、参照されるシート(例えば、「経費シート」)のブックレベル範囲名を用いて、「=g経費」と定義(記載)する。これにより、ブックレベル範囲名として「g経費」が付されたシート、つまりこの例では、参照されるシートのシート名を取得できる。また、参照先シート名欄30は、ユーザによる入力も受け付ける。
なお、参照する側のシートは、参照先シート名欄30に定義されたシート名を参照するように構成されており、ユーザは参照先シート名欄30に任意のシート名を入力することで、参照する側のシートの参照先を変更することもできる。
更に、参照先シート名欄30の値(定義情報S)は、ユーザによる固定値の入力を受付ける第3状態更新手段173によって、あるいはこれと同様の更新を第4状態更新手段174に備えることによって、再定義情報Rでの再定義も可能に構成する。
すなわち、参照する側のシートに再定義情報設定領域25を設ける。再定義情報設定領域25は、例えば、参照先シート名欄30と同列の2行目(例えば「K2」セル)などとし、再定義情報Rとして参照されるシート(例えば「経費シート」)のブックレベル範囲名を活用した演算式(例えば「=g経費」)を定義する。
また、再定義マクロとして、参照先シート名欄30に同列の再定義情報設定領域25に定義されている再定義情報を参照先シート名欄30にコピーする命令を定義し、これを実行することによって、参照先シート名欄30には、再定義情報Rとして保存されている演算式が、所定のタイミングで再定義されるようになる。
また、参照する側のシートで、参照される側のシートのデータを参照する場合には、参照すべきセルを間接的に指定するための関数を用いる。例えばエクセル(登録商標)の場合は、「InDirect関数」によって参照先のセルアドレスを文字列又は文字列式として記載できる。これにより、あるシートから他のシートへの参照を定義するのに、参照先のアドレスの定義中にセル参照や関数を含めることができる。
文字列によるアドレス指定の例としては、「=InDirect("経費!F12")」により、経費シートの「F12」セルを参照する演算式などがある。文字列式による例としては、経費シートに定義したブックレベル範囲名を用いて「=InDirect(InDirect("g経費")&"!F12")」とする演算式などがある。これはInDirect関数に引数として、InDirect関数を使用し、関数の入れ子にした例である。この二つの例は結果的に同じ値を返す。
また、参照されるシートのシート名をセルに定義することもできる。すなわち、この例では、参照先シート名欄30(「K5」セル)を用いて、参照する側の任意のセル(例えば、「N12」セルなど)において「=InDirect(K5&"!F12")」と定義することにより、損益計算シートの「N12」セルにおいて、損益計算シートの参照先シート名欄30(「K5」セル)に定義されたシート名を有するシート(経費シート)の「F12」セルが参照できる。この例においては、「K5」部分がセル参照である。
第4状態更新手段174は、このように設定されたシートを用いて、複数のシート間に亘る操作を行う場合に必要に応じて第4状態更新処理を行う。以下これについて更に説明する。
[1-1.シートの一時的な差し換えの場合]
図19および図20は、参照される側のシートを一時的に差し換えて、これを参照する側のシートに反映させる場合の第4状態更新処理の例を示す図であり、参照される側のシートとして経費シート、参照する側のシートとして損益計算シートを用いる場合の例である。
図19(A)を参照して、損益計算シートの例えば「K5」セルは、参照先シート名欄30であり、内容は経費シートのブックレベル範囲名を活用した演算式(例えば、「=g経費」)が定義されている。また、図18の場合と同様に、参照先シート名欄30は、ユーザによる入力も可能に構成されているとともに、再定義情報Rによる再定義も可能である。すなわち、参照先シート名欄30と同列の例えば2行目(「K2」セル)などに設けられた再定義情報設定領域25に保存されている再定義情報R(この例では演算式(例えば「=g経費」))を、ユーザの一定の操作(値削除など)により、「K5」セルに上書きするように構成されている。
ここでは、参照される側のシート(経費シート)が複数ある場合を例に説明する。この例では、同図(B)、同図(C)に示すように、ユーザが経費シートを複写した結果、シート名が「経費111」であるシートとシート名が「経費222」であるシートが存在している。そしてシート名が「経費222」のシートについて、H29年11月の入金(破線で示す欄)の値を変更している。
ここで、エクセル(登録商標)の基本機能として、セル範囲名を有するシートを複写した場合は、当該セル範囲名も複写されるが、当該セル範囲名がブックレベル範囲名のときは、複写先ではシートレベル範囲名に置き換わるようになっている。つまり複写元のシート(経費111シート)で当該セル範囲名がブックレベル範囲名であったとしても、複写先のシート(経費222シート)では当該セル範囲名はシートレベル範囲名となる。これは、一つのファイル(ワークブック)内には、同名のブックレベル範囲名は一つしか定義できないという、エクセル(登録商標)の仕様によるものである。
つまりこの例では、ユーザが経費シートを複写した結果、「C2」セルに対してブックレベル範囲名として「g経費」が付されたシート名「経費111」のシートと、シートレベル範囲名として「g経費」が付されたシート名「経費222」のシートとが存在している。
そして上述のとおり、損益計算シートの「K5」セル(参照先シート名欄30)は、経費シートのブックレベル範囲名を活用した演算式(例えば、「=g経費」)が定義されており、これによりブックレベル範囲名として「g経費」が付されたシートが参照される。つまり、参照先シート名欄30に「=g経費」と定義することによって、ブックレベル範囲名として「g経費」が付されたシートが参照される。
従ってこの場合、損益計算シートでは同図(A)に示すように、ブックレベル範囲名として「g経費」が付された「経費111」のシートが参照されている。
この状態で、損益計算シートにおいて、シート名が「経費111」のシート(ブックレベル範囲名「g経費」を持つシート)ではなく、シート名が「経費222」のシート(シート複写により新たに生成されたシート)を参照させる(参照される側のシートを一時的に差し換える)場合の状態更新処理について説明する。
ブックレベル範囲名「g経費」を持つシート以外のシートを一時的に参照するには、図20(A)に示すように、ユーザが、損益計算シートの参照先シート名欄30(「K5」セル)に、固定値「経費222」を入力する。これにより、参照先のシートは「経費222」というシート名のシートに変更され、例えば、損益計算シートの任意のセル(例えば、「M8」セルなど)に定義された関数(例えば、「=InDirect($K$5 & "!$M$5")」など)により、「経費222」というシート名のシートのセルの値(前述の例では、「M5」セルの値)を参照できる。
また、参照される側のシートを、シート名「経費222」のシートからシート名「経費111」のシートに戻す場合は、同図(B)に示すように参照先シート名欄30の値をクリア(例えば、削除(Delete)Keyの押下)する。
これにより、同図(C)に示すように第3状態更新手段173によって、参照先シート名欄30のセルが再定義情報設定領域25の再定義情報Rの演算式(例えば、「=g経費」)に再定義される。この演算式の値(ブックレベル範囲名「g経費」と紐づいたセルの値(「経費111」シートのC2セルの値))は、「経費111」であり、参照先シート名欄30のセルの値は「経費111」となる。これにより参照される側のシートは、シート名が「経費111」のシートに戻る。
[1-2.シートの恒久的な差し換えの場合]
次に、参照される側のシートを恒久的に差し換えて、これを参照する側のシートに反映させる場合の第4状態更新処理について説明する。
例えば、図19および図20の場合(「経費111」シート(ブックレベル範囲名「g経費」を持つシート)を複写して、「経費222」を作成した場合)を例に説明する。この例において参照される側のシートを恒久的に差し換える場合には、ユーザが参照される側のシートに付与されている範囲名をシートレベルからブックレベルに変更する。
表計算ソフトウェア16の基本機能として、ブックレベル範囲名をシートレベル範囲名に変更したり、その逆に変更することはできない。そのため、セル範囲名のレベルを変更する場合には、セル範囲名を一旦削除して改めて付与する必要がある。
具体的には、複写元の「経費111」というシート名のシート(複写元)に定義されているブックレベル範囲名「g経費」を削除し、「経費222」というシート名のシート上の任意のセル(例えば、「C2」セル)に新たにブックレベル範囲名「g経費」を定義する。
そして参照されるシート(「経費222」というシート名のシート)から、他のシートに移動すると、参照されるシートにおいて「DeActivateイベント」が発生する。これを契機として再定義マクロによって、ブックレベル範囲名「g経費」と紐づいたセル(例えば「経費222」というシート名前のシートの「C2」セル)には、そのシート名(「経費222」)が上書きされる。これ以降は、参照される側のシートはシート名「経費222」のシートとなる。
[1-3.シート名と参照可能な形で保存されたシート名との整合性を保つ処理]
シート名はシート毎に一意に指定する文字列であり、表計算ソフトウェア16では「シートタブ」の領域に表示される。この文字列は、ユーザがGUIを経由した操作にて、変更可能である。
表計算ソフトウェア16の演算式からは、「シートタブ」の文字列(以下「実シート名」と呼ぶ)を参照することはできないため、本実施形態では、他の場所(例えば、ブックレベル範囲名「g経費」と紐づけられている「C2」セル)にシートタブと同じ文字列を保存して(そのように再定義マクロを定義して)その文字列(以下「参照可能シート名」と呼ぶ)を参照している。
ところで、ユーザがこの実シート名を変更したままでは、実シート名と参照可能シート名との間に不一致が生じる。この不一致のために参照する側のシートから目的のシートを特定できず、目的のセルを参照することができなくなる。
具体的に、ユーザが「経費111」という名称のシートを、GUI操作で、「経費AAA」という名称に変更した場合を例に説明する。この場合には、「経費111」という名称のシートを参照していたシート(例えば、損益シート)に定義されている演算式で、不都合が起こる。
これは、シートタブに表示されているシート名は、例えばユーザがシートタブに入力した後の決定処理(例えば、Enterキーの押下など)により「経費AAA」と更新されるが、ブックレベル範囲名「g経費」と紐づけられているセル(「C2」セル)の値は、決定処理のみでは「経費111」のまま更新されないためである。
この状態で損益シート内の演算式は、「g経費」と紐づけられているセルの値である「経費111」をシート名と見做して、「経費111」というシートを参照しようとする。しかし、「経費111」という名称だったシートは、名称変更されて「経費AAA」という名称になっている。
そうなると、損益シート内の演算式は、参照先のシートが消滅したと誤認し、「参照先不定」のエラーを発生させてしまう。ただし、この時点では、損益シートは非Activeの状態なので、この不都合はユーザからは見えない。ユーザが損益シートをActive(つまり画面に表示されている)の状態にした時に、初めてこの不具合が見えることになる。
そこで、第4状態更新処理手段174では、参照先のシート名を修復する状態更新処理を行う。
ユーザがGUIを経由した操作にて、参照される側のシート名を変更する時においては必ず、参照される側のシート(例えば経費シート)がActiveで、参照する側のシート(一般に、損益シートなどの集計を目的としたシート)が非Activeである。逆にユーザが、参照する側のシートをActiveにする操作をすると、参照する側のシートがActiveになる前に、参照されるシートが非Activeとなる。
第4状態更新処理手段174では、変更されるシートが非Activeとなるタイミングで、シート名と参照可能な形で保存されたシート名との間に不整合を解消する。具体的には変更されるシートが非Activeとなるタイミングで再定義マクロが起動し、参照可能な形で保存されたシート名を上書きする。この再定義マクロは、「シートタブに表示されているシート名を、ブックレベル範囲名「g経費」と紐づけられているセルに複写する」という命令を少なくとも含み、図18を参照して説明した「シート名を上書きする再定義マクロ」である。
具体的には、ユーザが「経費」という名称のシートを、GUI操作で、「経費AAA」という名称に変更し、その後に他のシートに移動した場合に、第4状態更新処理手段174による第4状態更新処理が実行される。そして、上述のシート名を上書きする再定義マクロによって、シートタブに表示されているシート名「経費AAA」(図18(C)では「経費2908」)を、ブックレベル範囲名「g経費」と紐づけられているセル(「C2」セル)に複写する。
これにより、損益シート内の演算式は、「経費」という名称のシートではなく、「経費AAA」という名称のシートを参照するようになる(図18参照、図18においては、このシート名を上書きする再定義マクロによって「経費2908」という名称のシートが参照されるようになっている)。よって、ユーザが損益シートをActive(つまり画面に表示されている)の状態にした時には、不具合の修正が完了しており、当該不具合は、ユーザの目に触れることはない。
以上が、新旧差換えを簡便に行うための手段とともに、ユーザがGUI経由で参照される側のシート名を変更した場合にも、参照されるシートを一意に保つ仕組みである。
[2.複数シートの串刺し演算の場合シートの指定]
次に、図21から図26を参照して、第4状態更新手段174によって、複数シートの串刺し演算の場合に、マクロ内から動的にシートを指定し、参照するシートの更新をする例について説明する。
まず、図21は、本実施形態の串刺し演算の概要を示す図である。本実施形態の串刺し演算では、同図(A)に示すように、一覧表シート、集計データシート、元データシートを有する。串刺し演算は、1枚の一覧表シート、1枚の集計データシートおよび複数(最大99枚まで)の元データシートの組合せを一組とするデータ単位(串刺し演算データ単位)で実行される。
一覧表シートは、元データシートのシート名を列挙していくシートである。シート名を列挙する列はある列に特定されている。
集計データシートは、一覧表シートから元データシートのシート名を取得し、元データシートの共通項目についてその値を一覧させていくシートである。このシートには、一覧表シートから取得するシート名と、元データシートから取得する共通項目のデータを演算式により定義しておく。
元データシートは、それぞれ、シート中の任意のセル範囲に、シートレベル範囲名を定義しておく。また、集計データシートに複写される共通項目のデータのレイアウトも定義しておく。元データシートは、例えば帳票形式でその一部が表示され、ユーザからの入力を受け付ける画面などになるが、共通項目は通常はユーザに非表示となっている。共通項目には、それ以外の(右下方の)各種入力欄から、会計基本処理プログラム21によってデータが集約(編集)される。なお、各種入力欄はユーザによるカスタマイズが許容されている。その際、共通項目の編集も可能である。
串刺し演算データ単位(1枚の一覧表シート、1枚の集計データシートおよび複数(最大99枚まで)の元データシートの組合せを一組とするデータ単位)は会計処理システム10内で複数定義できる。串刺し演算データ単位の内部では、共通項目は同じレイアウトのセル範囲でなければならない。この場合複数の串刺し演算データ単位(例えば、単位A、単位B)の間で、共通項目は同じ項目で構成されていてもよいし、異なる項目で構成されていてもよい。
同図(B)は、集計データシートと出力帳票(損益計算や残高などの帳票)の関係の概要を示す図である。本実施形態の会計処理システム10では、データが入力されるシートとして、経費シート、売上・仕入シート、普通仕訳シート、追加シートを有している。そしてこれらとは別に独立して串刺し演算データ単位がワンセット定義されている。串刺し演算データ単位は、会計処理システム10内で複数定義できる。この場合複数の串刺し演算データ単位(例えば、単位A、単位B)の間で、共通項目は同じ項目で構成されていてもよいし、異なる項目で構成されていてもよい。そして例えば、損益計算シートや日別残高シートではこの串刺し演算データ単位でデータを収集し、損益計算や日別残高計算を行う。
串刺し演算の場合に状態を更新するための再定義マクロは、ブック内でシートの移動があった(DeActivateイベントが発生する)時に、起動するように定義する。この再定義マクロの内容は、以下の通りである。
(1)対象シートかどうかを判定するステップ1
移動元のシート(以下TagetSheetと言う)に、目的のシートレベル範囲名が定義されているか否かを検索し、目的のシートレベル範囲名がない場合(例えば、単に空白のシートが追加された場合など)は処理を終了する。
(2)対象シートかどうかを判定するステップ2
TagetSheetのシート名が、既に一覧表シートに列挙されているかを検索し、列挙されている場合は、新規追加された元データシートではない(既存の元データシートである)と判断し、処理を終了する。
(3)ファイル内の全シートを順読みし、目的のシートレベル範囲名が定義されているシートのシート名一覧を作成する。ユーザが串刺し演算処理の対象のシートにすることを目的として作成(複写等)した元データシートであれば、シートレベル範囲名が設定されているため、これに基づき一覧を作成する。
(4)上記(3)の一覧(元データシートのシート名の一覧)を、一覧表シートの所定の列に貼り付ける(一覧表シートを更新する)。
また、貼り付ける前に、FLG欄(C列)のセルを値クリア(ユーザが前回設定した内容を全削除)しておく。この列の値は後述する「参照される側のシートを取捨選択」の画面(オウン・コードによるGUI画面)で設定され、集計データシート内の演算式から参照される。
なお、上記(2)の判定で、TagetSheetのシート名が既に一覧表シートに列挙されていないと判定されて(3)に進む状態としては、以下の態様がある。
・「既存のシートで、シート中に目的の「シートレベル範囲名」があるが、一覧表シートには名前がない」場合であり、ユーザがシート名を変更したことによって、一覧表シートに記載されたシート名と、実際のシート名との間に不一致が起きている場合である。
・「既存のシートで、シート中に目的の「シートレベル範囲名」があるが、一覧表シートには名前がない」場合であり、ユーザがそのシートを複写したことにより、一覧表シートにシート名を追加すべきであるが、未だリストに追加されていない場合である。
・「新規のシートに、ユーザが目的のシートレベル範囲名を付与した」場合であり、一覧表シートにシート名を追加すべきであるが、未だリストに追加されていない場合である。
本実施形態の串刺し演算は、会計基本処理プログラム21によって実行されるが、本実施形態の第4状態更新手段174は、図21に示す各シートの構成(設定)と、上述の串刺し演算の場合に状態を更新するための再定義マクロによって、ユーザによりシートの操作(追加、削除、名称の変更)がされた場合に串刺し演算の処理対象を(予定されている全てのシートが参照できるようにその状態を)更新する。
図22~図25を参照して、具体例を挙げて説明する。
図22は、元データシートの一例を示す図である。同図(A)はユーザの入力画面として表示される元データシートの例であり、同図(B)は同図(A)では非表示となっていた部分を含めた元データシートの全体構成の一例である。
同図は入金伝票の一例である。入力画面において、通常は同図(A)のように(例えば、2行~44行、B列~J列が非表示)で表示されており、必要に応じて例えばユーザがA1セルをダブルクリックすると、同図(B)のように全体が表示される。同図(B)の破線の領域が、同図(A)に表示されている。
同図(A)の例では矢印の範囲(行方向の例えば15行分)が、共通項目として集計されるデータである。なお、行数は15行に限らず、適宜変更が可能である。
ここでは入金伝票のレイアウトで示しているが、これに限らず、例えば振替伝票や領収書などのレイアウトでもよいし、日報のように本来会計処理に使用される帳票以外のレイアウトであってもよい。
同図(B)に示すように、同図(A)で表示されていた共通項目の各データは、同シート内の通常は非表示の左上領域(集約領域33という。)に集約される。そしてこの集約領域33には、シートレベル範囲名(例えば、「n追加sht」)が定義されている。この元データシートが、串刺し演算データ単位毎に最大99枚まで存在している。
再定義マクロは、このシートレベル範囲名(例えば、「n追加sht」)が定義されている場合には、集計の対象とする(上記(1)、(2))。
図23は、一覧表シートの一例である。例えば、C列には、「n追加sht」のシートレベル範囲名を有するシート(つまり「元データシート」)のシート名一覧が作成される。シート名は例えば99件まで登録可能であり、このC列(の99件分のセル範囲)には、セル範囲名(例えば、「g追加SHT名称」)が定義されている。セル範囲「g追加SHT名称」は、集計データシート(シート名は、「追加シート」)から参照されている。また、一覧表シートの任意のセル(例えば、「B2」セル)には、ブックレベル範囲名として「g追加sht」というセル範囲名が定義されている。
図24は、集計データシートの一例を示す図である。この例で、A列は、ブックレベル範囲名「g追加sht名称」と紐づいているセル範囲(すなわち、図23のシートのC列)を参照し(表示欄CN参照)、当該シート名の一覧に含まれるシート名(文字列)を15行ずつ繰り返し記載している。繰り返し行数は本シートの「A3」セルで指定されている。
A列の演算式は、表示欄CNに示すように「=IFERROR(OFFSET(g追加SHT名称,INT((CELL("row",A9)-4)/n行数),0,1,1),"**")」であり、このうちセル範囲「g追加SHT名称」は一覧表シート(シート名は「追加sht」)に属するセル範囲を参照している。「n行数」は、集計データシートの「A3」セル(セルの値は15であり、このセルの値で繰返し行数を指定している)に与えられた範囲名である。演算式中の「INT((CELL("row",A9)-4)」の値は1であり、演算式全体では上記セル範囲の1行目の値を参照している。上記の演算式は、「A9」セルに記載された場合の例である。
第4状態更新処理手段174は、このように構成された各種シートと上述の串刺し演算の場合に状態を更新するための再定義マクロによって、シートの操作(追加、削除、名称の変更)がされた場合に串刺し演算の処理対象を(予定されている全てのシートが参照できるようにその状態を)更新する。
第4状態更新処理手段174は、参照するシートから参照される側のシートへの参照手段を提供するものである。つまり、参照するシートにおいて参照される側のシートを取捨選択することができ、選択したシートのみを集計の対象とすることもできる。取捨選択の方法としては、参照される側のシート上のデータの内容によったり、参照されるシートに参照用とは別の印を付けたりする、別シートやGUI画面にシート名の一覧を表示してユーザに選択させるような方法がある。表計算ソフトウェア16にはユーザにシート選択をさせる場合に利用できる簡便な機能として、オートフィルタやチェックボックスのような手段が提供されている。
参照される側のシートを取捨選択するには、オウン・コードによるGUI画面(「参照される側のシートを取捨選択」の画面)を定義すると良い。その場合、GUI画面は、一覧表シート又は集計データシートの「A1」セルをユーザがダブルクリックすると起動する。この画面上には元データシートのシート名の一覧が表示されている。表示されているシート名が多数の時は、画面内に縦スクロールバーも現れる。シート名の横にはそれぞれ、チェックボックスが付されている。ユーザが、あるシートを集計対象外としたいときは、シートのシート名横のチェックを外す。その後ユーザがOKボタンを押すと、GUI画面からマクロが起動する。そのマクロは、集計対象外のシートがあるときは、一覧表シートの対象外とされたシートの「対象外フラグ」列のセルの値を1に、そうでないシートの「対象外フラグ」列のセルの値を空白にする。集計データシート内の演算式は、ある元データシートに対応する「対象外フラグ」が1の時は、(「If Then 分岐」の機能を活用して、)その元データシートからの値複写を行わない仕様になっている。一覧表シートの「対象外フラグ」列は、元データシートのリスト貼付時にクリアされ、この画面で編集される。
なお、例えば元データシートにおいても、第3状態更新手段173による更新処理が可能となっている。図25は、図22に示す元データシートを示す図である。図22(B)および図25を参照して、例えば、入金伝票シートには、例えば「N51」セルに相手先コードを名称に変換する演算式(以下「名称変換算式」と呼ぶ。これは例えば、エクセル(登録商標)では「Vlookup」のような関数による簡便な手段が広く利用されている)が定義されている。また、入金伝票シートの通常は非表示となっている領域(名称変換算式参照領域35、図22(B)参照)には、相手先コードを名称に変換するための相手先リストが定義されている。名称変換の方法は、上記に限らず、自己作成関数による方法、イベント発生を捉えてマクロを実行する方法など、がある。コード変換は相手先のほか、地名、事業所名、商品名、勘定科目など、種々の変換が考えられる。
そして、同図(A)に示すように相手先コード欄(「N50」セル)に数値の入力があると、名称変換算式は名称変換算式参照領域35の相手先リストを参照し、入力された数値に一致する相手先名が有る場合は、相手先名欄(「N51」セル)に当該相手先名を表示する。相手先コード欄、名称変換算式参照領域35、相手先名欄は、単一のシート内にある必要はない。例えば、名称変換算式参照領域35を、別シート、別ファイル(ワークブック)に設けたり、ネットワーク上の他のコンピュータやストレージに置いて運用することも出来る。相手先コード欄と、相手先名欄の役割を単一のセルに付けることもできる。
また、名称変換算式が定義されている「N51」セルと同列の例えば2行目(「N2」セル)には、再定義情報設定領域25が設けられており(図22(B)参照)、再定義情報Rとして、相手先コードを名称に変換する名称変換算式(「N51」セルに定義されている演算式)が定義されている。
ユーザは名称変換算式による変換が不要な場合は、図25(B)に示すように相手先名欄に相手先名を直接入力する。そして名称変換算式による変換機能を復活させたい場合には、同図(C)に示すように相手先名欄(「N51」セル)において値削除(Deleteキーを押下)する。これにより第3状態更新手段173が「N2」セルに定義された再定義情報Rおよび再定義マクロを用いて、「N51」セルに名称変換算式を再定義する。
このように、本実施形態では、会計基本処理プログラム21で使用する定義情報S(主に演算式など)が定義されている場合には、状態更新手段17を設定し、セル、行、列、シートの操作があった場合には、定義情報Sを再定義することが可能となっている。
図26は、「元データシート」のシート名一覧を保存する他の例を示す図である。同図は、一覧表シートの機能を集計データシートの中に集約させている。
上記の例では、「元データシート」のシート名一覧を保存するシートとして、専用のシート、すなわち、一覧表シートにリストとして書き込む方法を説明した。
これに対し、図26の場合は、「元データシート」のシート名一覧を、参照する側のシートに保存する。すなわち同図に示すように、「元データシート」のシート名一覧を保存するための領域を、集計データシート内に定義している。これにより、串刺し演算データ単位を構成するシートを、元データシートと、同図に示す一覧表シートと集計データシートとの集約シートとの2種類にすることができ、シート構成を簡略化することができる。
<セルの表示態様変更手段>
本実施形態の会計処理システム10は、更に、所定の条件に応じてセルの表示態様を変更するセル表示態様変更手段を備える。
セル表示態様変更手段は、セルの内容(定義情報S)が所定の条件の場合に、当該セルを或る表示態様で表示させる手段である。ユーザは、入力した値に応じてセルの表示態様が変化する場合があるので、入力値等が適切であるか否かを判断でき、その意味では警告機能ということもできる。
具体的には、会計基本処理プログラム21では、セル表示態様変更手段として、警告処理を行うシートについて、予め対象範囲内のセルに「条件付き書式」として表示態様を設定しておく。ここで「条件付き書式」は、表計算ソフトウェア16の基本機能であり、指定した条件に合致した場合に適用される表示態様(文字の色やセルの色)に関する書式を指定する機能である。
例えば、演算式のセル(デフォルト)に対しては、セルの背景色を薄い赤、固定値の入っているセルにはセルの背景色を濃い赤などに設定する。
例えば、演算式が定義されているセルに対してユーザが定数(固定値)を入力する。この場合、上記の例では薄い赤の背景色のセルに定数(固定値)が入力され、演算式でなくなるため、セル表示態様変更手段によって背景色が濃い赤に変化する。このような表示態様の変化により、当該セルにデフォルトで設定されていた定義情報Sが演算式であるのか固定値であるのかをユーザが目視することができ、計算結果の検証に役立たせることができる。また、シート上で演算式が定義されているセルと固定値が定義されているセルの表示態様が異なるため、体裁を良好にすることもできる。
セル表示態様変更手段は、ユーザのシートヘの入力を契機として態様変更を行う。ユーザは、設定した「条件付き書式」により、セルのコンテンツが演算式か固定値かを、その表示態様によって目視で判断する。そして、例えば固定値であるべきセルについて、意図的に固定値が入力されている場合は正常とし、誤操作により固定値が入力されている場合には、当該値を消去(Deleteキーを押下)する。
そしてこのようにあるセルに対する「値消去」により発生したChangeイベントを契機として、第3状態更新手段173が状態更新処理を行い、操作されたセルに定義されていた再定義情報Rが再定義される。
表計算ソフトウェア16の自動修正機能の仕様として、行・列の挿入・削除をした場合には、セルの演算式(所定の定義情報S)は維持されない。そのため本実施形態では、第2状態更新手段172および第3状態更新手段173によって当該演算式(所定の定義情報S)を維持している。それに対し、セル表示態様変更手段で設定される「条件付き書式」は行・列の挿入・削除をした場合には、表計算ソフトウェア16の自動修正機能により維持される。
ただし表計算ソフトウェア16の自動修正機能では、シート上で、「セルの切り取り」をした場合には、切り取られたセルの「条件付き書式」は維持されない。そこで、本実施形態の状態更新処理手段17は、「条件付き書式」について、再定義を行う。具体的には、状態更新処理手段17は、シートのDeActivate時に状態更新処理を実行し、シート内の「条件付き書式」が正常であるか否かに関わらず、全てデフォルトの「条件付き書式」を再定義する。この処理は、例えば、第2状態更新処理手段172によって行うようにしてもよいし、別途の状態更新処理手段によって行うようにしてもよい。デフォルトの「条件付き書式」は、第2状態更新処理手段172と同様に、再定義情報Rとしてシート上に保存しても良いし、マクロのソースコード内に保存しても良い。また、シート上の正常なセルから、「条件付き書式」の複写をしても良い。
なおこの表示態様は、背景色の他、セルの網掛け、下線、フォントスタイル変更などであってもよい。
また、セル表示態様変更手段は例えば、シートに入力された日付に注目し、日付の変わるごとに、行全体の表示態様(背景色など)を変更したり、取引種別の列に注目し、種別に応じて(例えば、売上の行は水色、仕入の行はピンクなど)に表示態様を変更する。このようにすることで、警告機能に加えて、シートの体裁を良好にすることができる。
<付記>
以下、これまでに説明したことも含めて、本実施形態の別の観点からの説明を付記する。
[状態更新処理手段]
本実施形態の状態更新処理手段17は、セル、行・列、シートに対して会計基本処理プログラム21での初期状態と異なる、あるいは想定していない操作(入力等)が行われた場合、セルに当初定義されていた定義情報Sを再定義し直す、すなわちセルの状態を修復するものである。ここで、「修復」には、次の(X)、(Y)のような、二種類の意味がある。
(X)表計算ソフトウェア16の基本機能としての修正機能
これは、ユーザがシートを編集した時に、表計算ソフトウェア16が演算式や表示の整合性を維持するために行うもの(基本機能としての「自動修正機能」)であり、具体的には、セル単位の機能として列追加・削除時の演算式の変化や、シート単位の機能として参照されるシートがユーザにより、名前変更されたときの演算式の修正等の機能である。
(Y)本実施形態の状態更新処理機能
会計基本処理プログラム21が想定する所定の結果を維持するため、状態更新処理手段17(上述の第1状態更新処理手段171~第4状態更新処理手段174)によって修復をする機能である。一例を挙げるとセル単位の機能として、特定のセルの内容をユーザが空白にした場合に、セルごとに定義されている演算式等(定義情報S)を上書き(再定義情報Rにより再定義)する機能や、セルに定義されている書式(条件付書式)が削除された場合に自動で修復する機能である。
また、シート単位の機能として、シートの差換えがあった場合またはシートの串刺し演算があった場合に、追加、変更等されたシートを参照の主体に反映させる機能である。
すなわち本実施形態では、表計算ソフトウェア16の基本機能としての自動修正機能も一部活用しつつ、自動修正機能で不足する部分を、状態更新処理手段17(再定義マクロ及び再定義情報R、シートの各種設定)によって補い、ユーザにとって利便性の高い修復機能を提供している。
本実施形態の会計処理システム10は、以下の機能(手段)を有している。
(a)ユーザによって行又は列の操作があった後に、セルの内容が変更された場合に、会計基本処理プログラム21(会計基本マクロ)が参照するセルに不整合が生じないように、セルの内容を再定義する機能(第1状態更新処理手段171)
(b)ユーザによってセルに何らかの操作(入力等)がされた場合に、入力された値の種類(演算式、固定値など)によらず、初期のセルの定義情報Sに再定義する機能(第2状態更新処理手段172)
この場合、対象となるシートは、会計処理システム10の場合、例えば経費シート、売上・仕入シート、普通仕訳シート、追加シートである。なお、シートは一例であり、この例に限らない。
また、更新対象のセルは、ユーザによる操作があったセルと同じ列で、有効な行範囲内にある全てのセルであり、この場合は、修正対象のセル範囲は、縦方向に長いセルの一団となる。
また、更新対象のセルは、再定義情報設定領域25に定義されている再定義情報Rによって更新(修復)される。
また、対象となるシートで行挿入があった場合は、シート内の、演算式の入るべき列で、有効な行範囲内にある全てのセルが再定義情報Rによって更新(修復)される。つまり、ある列の中に一つでも修正対象セルがあれば、(挿入した行の)列全体の演算式を更新する。なお、この場合、シート内の演算式の全てが更新される構成であってもよい。また、シートを移動した際に、挿入した行の列全体の演算式の更新(またはシート内の全ての演算式の更新)を行うようにしてもよいし、行わないようにしてもよい。
(c)ユーザによって或るセルに何らかの操作(入力等)がされた場合、入力された値の種類が固定値(定数)であればその入力は許容し、それ以外の場合は初期のセルの定義情報Sに再定義する機能(第3状態更新処理手段173)
この場合、対象となるシートは例えば、売上シートである。また、更新の対象となる或るセルとは、リスト中の特定の列に属するセル(縦長の一団の単位となる)、または、帳票形式のシートで名称変換算式による表示を行うセル(セル一個の単位)である。ただし、そのセルが既述の第3状態更新処理の判定基準(ケース1~ケース5)を満たさない場合は処理を終了する。判定は、入力があったセルを1個単位で全数判定する。
また、名称変換算式による表示を行うセルの更新処理において、同じ列に名称変換算式が定義されているセルが複数ある場合、再定義情報Rの定義領域は、他の領域が適宜選択される。また、再定義情報Rは再定義マクロ内に直接記載してもよいが、その場合は適宜再定義マクロのメンテナンスが必要となる。
また、対象となるシートで、行挿入があった場合は、シート内の、演算式の入るべき列で、有効な行範囲内にある全てのセルについて更新処理を行う。この場合は、修正対象のセル範囲は、横方向に長いセルの一団となる。行挿入時には、全てのセルが空白であるため、全てのセルが更新される。
また、対象となるシートから他のシートに移動する場合、演算式の入るべき列で、有効な行範囲内にある全てのセルについて、第3状態更新処理の判定基準(ケース1~ケース5)でセル1個単位で判定し、異常のセルがある場合には更新される。
(d)会計基本処理プログラム21(会計基本マクロ)複数のシートに亘る処理を行うに際し、シートの追加や差し替えがあった場合に、それらを複数のシートに亘る処理に反映させる機能(第4状態更新処理手段174)
(d-1)シートの差し換え時の状態更新処理
この場合、再定義マクロの起動契機は、参照されるシート(経費シート、売上・仕入シート、普通仕訳シートほか、以下「対象シート」という)から、他のシートに移動するときである。
移動元のシートが対象シートに属するかどうかは、目印となる対象シート情報で判断する。対象シート情報は例えば、ブックレベル範囲名(上記の例では、経費シートの「g経費」)である。この対象シート情報を最新の対象シートに設定する。
また、第4状態更新処理手段174では、対象となる(追加等された)シート名を参照する側のシート上に定義された演算式から参照可能な方法で保存する。
ここで、(d-1)の機能は、あるシート(ここでは例として、経費シート)の世代管理をするための機能であるといえる。シートの差し替えをする時は、複数の「経費」シートがあることになる。つまり、「旧経費」シート、「新経費」シート、「二世代前の経費」シート・・・と同じレイアウトのシートが複数存在する。この場合、どのシートが原本であるか、最新であるか、どのシートから金額を集計するかを確定させる必要がある。この原本が確定すれば、状態更新処理手段17が自動で状態の更新を行うことができる。その原本を確定するための対象シート情報が例えば、ブックレベル範囲名(例えば、「g経費」)であり、当該対象シート情報を予めシート上のセルに設定しておく。
なお、再定義マクロの起動契機は、参照されるシートから他のシートに移動するときであってもよいし、他のシートから参照するシートに移動するときであってもよい。
また、対象シート情報は、範囲名の有無に限らず、コメントの有無・内容、特定のセル(「A1」セルなど)に特定の文字を入れる、特定のセルの書式を特定の形(例えば、罫線の色指定)にするなどであってもよい。
また、シート名の保存場所は、表計算ソフトウェア16の演算式から読み出せる場所であれば良く、例えば、参照される側のシート、参照する側のシートのいずれのセルであってもよい。また、シート名を保存するための特別のシートを定義してもよいし、範囲名のリスト(Namesオブジェクト)に書き込む方法、シート名を返す関数を活用する方法もよい。
また、再定義マクロが保存する項目としては、参照先のシート名でもよいし、参照先のシート名と参照先のアドレス、セル参照などでもよい。表計算ソフトウェア16の演算式で解釈できる形であればよく、範囲名でもよい。
(d-2)串刺し演算処理時の状態更新処理
串刺し演算処理時の状態を更新する再定義マクロは、元データシートから、他のシートに移動するときに実行される。
移動元のシートが元データシートであるかどうかは、上記(d-1)と同様に対象シート情報(例えば、シートレベル範囲名)がシートに設定されているか、否かで判断する。
再定義マクロは、移動元のシートの名称が、一覧表シートに含まれているか否かを判定し、そのシート名が、一覧表シートに含まれていなければ処理を続行し、含まれていれば処理を終了する。
再定義マクロは、一覧表シートの所定の領域に、元データシートのシート名を保存する。本実施形態では、シート名の一覧を確実に保持するために、独立したシート(一覧表シート)を定義している。この一覧表シートは、一の「串刺し演算データ単位」に対して、1件定義されている。再定義マクロは、元データシートから他のシートに移動する(DeActivateイベント発生)時に起動する。
また、対象シート情報は、範囲名の有無に限らず、名前付き範囲の有無、コメントの有無・内容、特定のセル(「A1」セルなど)に特定の文字を入れる、特定のセルの書式を特定の形(例えば、罫線の色指定)にするなどであってもよい。
また、シート名の保存場所は、表計算ソフトウェア16の演算式から読み出せる場所であれば良く、シート名を保存するための特別のシートを定義(「串刺し演算データ単位」を構成する一覧表シートを定義)して書き込むしてもよいし、参照する側のシートに保存(シート名を保存するための「セル領域」を、集計データシート内に定義して保存(図26参照)してもよい。また、 範囲名のリスト(Namesオブジェクト)に書き込むようにしてもよい。
また、再定義マクロが保存する項目としては、参照先のシート名でもよいし、参照先のシート名と参照先のアドレス、セル参照などでもよい。また、表計算ソフトウェア16の演算式で解釈できる形であればよく、範囲名でもよい。
また、「串刺し演算データ単位」とは、例えば元データシート、集計データシート、一覧表シートの3種類で一つの構成とする単位であり、それぞれのシート枚数は、元データシートが1~99枚、集計データシートが1枚、一覧表シートが1枚である。単一の「串刺し演算データ単位」に属する元データシートの枚数上限は、シート行数の上限(表計算ソフトウェアの仕様等による)やコンピュータのメモリ搭載量などに依存し、99枚を超える枚数の定義も可能である。また「串刺し演算データ単位」に属する元データシートは、ゼロ枚でもよい。
例えば、会計処理システム10では「串刺し演算データ単位」が実装されている。この単位内では、シートレベル範囲名「n追加」を利用して複数のシートのデータを束ねている。つまりこのシートレベル範囲名「n追加」は1つの「串刺し演算データ単位」に対応しており、シートレベル範囲名を変更すれば、ファイル(ワークブック)内に、複数の「串刺しデータ単位」を定義できる。この場合、「串刺しデータ単位」の構成は異なってもよい。
また本実施形態の会計処理システム10は単一のファイル(ワークブック)内で構成されるものに限らない。一つ又は複数の「串刺し演算データ単位」を別のファイルに保存したり、「串刺し演算データ単位」の一部を他ファイルに保存、つまり一覧表シート、集計データシートや元データシートを別々のファイルに保存する等も可能である。これらの場合にはマクロの他、表計算ソフトウェア16の基本機能に含まれるファイル間のデータ参照機能を活用可能である。
(e)セルの入力内容に応じた警告機能(セルの表示態様変更手段)
セルの内容(定義情報S)が所定の条件の場合に、当該セルを或る表示態様で表示させる手段であり、入力した値に応じてセルの表示態様が変化するため、警告機能として利用できる。また、初期状態であっても部分的に表示態様が異なるセルが存在するようになるため、シートの装飾性や視認性を高めることもできる。この警告機能や装飾性・視認性を高める設定は、マクロにより再定義され、維持される。
これら(a)~(e)の機能はいずれも、状態更新処理手段17のマクロ(再定義マクロ)が或るイベントを契機として起動し、セルの状態を更新する(再定義する)ものである。
[イベント]
本実施形態では、ChangeイベントとDeActivateイベントの発生を契機として、状態更新処理を実行する。ただし、上記(a)の第1状態更新処理手段171による状態更新処理は、イベントとは関係なく、各マクロ(会計基本マクロおよび/または再定義マクロ)の中で、必要に応じて利用される。
上記(b)の機能は、ChangeイベントおよびDeActivateイベントの発生を契機とし、上記(c)の機能は、Changeイベントが、リスト形式のシートで発生した場合、あるいは、Changeイベントが、帳票形式のシートで発生した場合、あるいは、DeActivateイベントが発生した場合(リスト・帳票、形式不問)を契機とし、上記(d)の機能は、DeActivateイベントが、対象のシートで発生した場合を契機とし、上記(e)の機能は、DeActivateイベントが、対象のシートで発生した場合を契機としている。
なおこれらは一例であり、例えばDeActivateイベント(シートの移動により、対象シートが非Activeになる場合に発生する)に変えて、Activateイベント(シートの移動により、対象シートがActiveになる場合に発生する)を契機としてもよいし、DeActivateイベントとActivateイベントの両方を契機としてもよい。
なお、上述した各イベントは、一例であり、同様の機能を有するイベントや、他のイベントであっても適用できる。また、各イベントを発生させる仕組みをオウン・コードして活用する方法もある。この場合、例えば、ファイル保存時やユーザのボタン押下時などのイベントが挙げられる。
なお、本実施形態では、状態更新処理手段17は再定義情報Rと、これを参照対象セルにコピーする再定義マクロを用いて、状態を更新する例を説明したが、会計基本マクロに直接、文字列で参照対象セルのアドレスを記載し(例えばアドレスを含む演算式を文字列で記載)し、当該参照対象セルはユーザの操作を禁止する構成を含むようにしてもよい。この場合、行や列の挿入があり、セルのアドレスが移動した場合には、会計基本マクロ内に文字列で記載された参照対象セルのアドレス(例えばアドレスを含む演算式)を手動で書き換える。
また、再定義情報Rは、任意のシート(定義情報Sと同一のファイル内のシートとは限らない)の任意のセルに記録し、再定義情報設定領域25には、再定義情報Rの記録されたセルへの参照(ファイル名、シート名、セルアドレス、範囲名など)を記録する構成にしても良い。この場合においても、定義情報Sの属するシート上で、行・列の追加・削除があった時は(一定の条件があるが)、表計算ソフトウェア16の自動修正機能によって、再定義情報Rの内容は修正される。
また、再定義情報Rを、定義情報生成欄27のセルに属するオブジェクトやプロパティに記録する方法でもよい。
例えば、第4状態更新手段174において、相手先名欄(元データシートのセル)に属するコメント(オブジェクト)の値(プロパティ)に、演算式などを(文字列の形式で)記録する構成にしてもよい。この場合、行や列の挿入があり、セルのアドレスが移動した場合には、コメントの値として文字列で記載された参照対象セルのアドレス(例えばアドレスを含む演算式)を手動で書き換える。
また、相手先名欄に属するコメントの値に再定義情報Rの記録されたセルへの参照を記録する構成でもよい。
また本実施形態の状態更新手段17による状態更新処理は、状態更新処理プログラム23中に演算式を保存したり、再定義情報R(例えばアドレスを含む演算式)を定義情報Sの領域中に保存して選択するなどの方法、によってもよい。具体的には例えば、行挿入時に独自のイベントを発生させた場合には、隣接する行から演算式を複写するなどしてもよい。
また、上記の実施形態では、表計算ソフトウェア16としてエクセル(登録商標)を用いる例を説明したが、同様の機能を有する他の表計算ソフトウェアであっても同様に実施でき、同様の効果が得られる。
本発明は、また、以上の実施形態で説明した情報処理システムに用いられる情報処理方法である。すなわち、表計算ソフトウェア16を用いて所定の定型処理を行う情報処理方法であって、定型処理を実行するために、表計算ソフトウェア16の少なくとも1つのセルに関連して定義された定義情報Sを用いた処理を実行するステップと、定義情報Sが関連するセル、行、列、シートの少なくともいずれかの操作可能対象について操作がされた場合に、操作予定領域22領域以外の領域(再定義情報設定領域25)に予め定義された再定義情報Rを用いて操作可能対象についての状態を更新するステップと、を有する情報処理方法である。
また、本発明は、上記の情報処理方法による処理をコンピュータに実行させる、表計算ソフトウェアを用いた情報処理プログラムである
また、本発明は、上述の入力手段と、出力手段と、計算処理手段と、状態更新処理手段とを備えて、表計算ソフトウェアを用いて所定の処理の計算を行う計算処理装置である。この計算処理装置は、例えば、上記の計算処理方法による処理をコンピュータに実行させるためのプログラムをコンピュータに実装することによって実現できる。
このように、本実施形態の会計処理システム10は、表計算ソフトウェア16を利用することで、従来の手書き帳簿のようにユーザにとってなじみのある環境を再現しつつ、更にはユーザの軽微なカスタマイズを許容しつつ利便性の高い運用を可能としている。
つまり、ユーザの操作の利便性や汎用性を高めるため、ユーザの入力制限や操作の制限は可能な限り少なくしている。このため、基本機能は可能な限り活用し、ユーザによる軽微なカスタマイズ(行の挿入・削除やシートの追加・削除・複製など)を認め、また操作予定領域22も可能な限り広く(非表示領域をなるべく少なく)する(シートの追加や差換え、表組の変更などのセル操作を許容する)とともに、操作予定領域22においては任意の入力を許容するように構成されている。
さらに、ユーザが、定義情報Sが定義(設定)されているセルに関連する行、列、セル、シートの少なくともいずれかの操作可能対象について操作(追加、削除等)することによって、会計処理システム10に本来想定されている処理が行えない(想定される適切な結果が得られない)状態となった場合であっても、状態更新処理手段17が再定義情報R及び再定義マクロを用いて少なくとも一つのセルに定義情報Sを再定義することによって、操作可能対象を、本来想定されている処理が行える(想定される適切な結果が得られる)状態に戻すことができる。これにより、例えば、表計算ソフトウェア16における、「シート保護」、「ブック保護」の機能を利用せずに、安定的な運用が実現できる。
なお、以上説明した状態更新手段17は、第1状態更新手段171~第4状態更新手段174の全てが含まれる構成であってもよいし、一部が含まれる構成であってもよいし、一部を適宜組合わせて適用することもできる。
また、上記の実施形態では、情報処理システム10として会計処理を行う会計処理システムを例に説明したが、本発明は、表計算ソフトウェアを用いた情報処理システムであれば上記の例に限らない。例えば、売上、成績の管理、在庫や生産の管理など様々な業務で利用される表計算ソフトウェアを用いた情報処理システムにおいても上記の実施形態を同様に適用可能であり、同様の効果が得られる。
尚、本発明は、上記した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。