サンプル

事件データベース(エクセルVBA)

法律事務所でエクセルを使ってやりたいことで、まず、最初に思い浮かぶのは「事件(案件)の管理」ではないでしょうか?

事件に関する情報を共有したり、利益相反をチェックしたりするために欠かせないですよね。

ネットを見ると、クラウド型の事件管理システムもいろいろとあるようです。

でも、うちの事務所のやり方にはあっていない気がするし、なによりも費用が高くて手が出ません。

アクセスやmySQLなどを使って、データベースを構築しても良いのですが、そこまで手間をかけたくないし、構築した本人以外の人には手も足もでない状態になるのが問題です。

なんとかエクセルだけで、うまく管理したいものですね。

小規模な事務所であれば、可能だと思います。やってみましょう!

ダウンロード

まずは、サンプル・ファイルをダウンロードしてください。

マクロを使用するためには、エクセルの設定を変更しなければならない場合があります。設定方法が分からない方は、こちらのサイトに詳しい説明があります。

このサンプル・ファイルに含まれている裁判所提出用文書の様式については、こちらを参考にさせていただきました。

使用方法

  • 「事件番号」のセルをダブルクリックし、新規事件を追加します。新規依頼人の事件と同一依頼人の事件のいずれかを選択できます。
  • 「現況区分」、「事件区分」および「担当区分」を、リストから選択して入力します。リストの項目は「オプション」シートで設定します。
  • 「データフォルダ」には、それぞれの事件のデータを保存するフォルダのアドレスを入力します。ハイパーリンクが自動的に設定されます。
  • 「訴訟委任状」および「期日請書」のシートを開くと、セルが選択されている行の事件に関する書類を自動的に作成できます。

細部については、「マニュアル」シートを参照してください。

このサンプルは、事件データベースを新たに作ったり、改善したりする場合の参考にしていただくためのものです。
使用にあたっては、それぞれの法律事務所に応じた修正を行った上でお使いください。

データベースの設計

法律事務所で事件管理を行うためのデータベースは、どのように設計すべきなのでしょうか? もちろん事務所の規模や業務のやり方によって異なると思いますが、私の場合は、次の4つのテーブルに分割するのが理想的だと思っています。

  • 依頼人テーブル(依頼人氏名、住所、連絡先など)
  • 事件テーブル(相談内容、関係者、相手方など)
  • 受任テーブル(受任内容、相手方代理人、データフォルダなど)
  • 裁判テーブル(裁判所名、裁判所事件番号、裁判所事件名、依頼人立場など)

このように分割する理由は、ひとりの依頼人に複数の事件が発生する場合があり(逆の場合もある)、受任すると管理すべきデータ(フィールド)が大きく増加し、それぞれの事件(受任案件)に複数の裁判(調停)が提起される場合があるからです。

しかし、アクセスなどでデータベースを構築するならば別ですが、エクセルでこれを実現しようとすると、非常に複雑な処理が必要となります。エクセルでデータベースを作るメリットは、「誰でも簡単にデータベースの全体を把握できる」、そして「必要に応じてデータベースの構成を柔軟に変更できる」というところにあります。このため、このサンプルでは、すべてのデータをひとつのテーブルに集約してしまいました。

ただし、このようにすると「重複したデータが生じて、どれが正しいデータなのか不明確になる」、「空白のデータが残って、データの入力漏れが発生しやすくなる」などの問題があります。そこで、このサンプルでは、次のような工夫をしています。

  • 「事件番号」、「現況区分」、「事件区分」および「担当区分」に応じて、自動的に並び替えが行われるようにして、重複したデータや空白のデータを確認しやすく(例えば、同じ依頼人の住所が異なったものにならないように)する。
  • 「事件番号」は「登録年」、「依頼人番号」および「事件番号」で構成し、有意性をもたせることで、並び替えを簡単にするとともに、データ相互の関係(例えば、依頼人の氏が変更になった場合の同一性)を明確にする。
  • 「現況区分」は、「未了」、「終了」および「相談のみ」に区分し、データ行全体のフォント色を異なったものにすることにより、どれが重要度の高いデータなのかを認識しやすくする。
  • ひとつの「事件番号」に複数の「依頼者」、「相手方」、「相手方代理人」、「裁判所事件番号」などがある場合でも、セル内の改行を用いることで柔軟に対応できるようにする。

なお、このサンプルでは、入力されたデータに基づき「訴訟委任状」と「期日請書」を自動作成できるようにしています。データベースを単なる一覧表ではなく、業務の簡素化に役立つツールにすることで、データの正確な入力や維持を継続するインセンティブを生むことは、データベースの設計以上に大切なことだと思っています。

ブックとワークシートの構成

ブックの構成

事件データベースのブックは、5つのシートで構成されています。

  • 「事件」シート
  • 「訴訟委任状」シート
  • 「期日請書」シート
  • 「オプション」シート
  • 「マニュアル」シート

「事件」シートの構成

「事件」シートには、データの入力および表示を行う「事件」テーブルが配置されています。

テーブルを使う理由については、こちの記事を御覧ください。

テーブルの作成方法については、こちらの記事を参考にしてください。

テーブルには、左から「事件番号」、「現況区分」、「事件区分」、「担当区分」および「事件呼名」の事件を特定・分類するための項目(フィールド)に続き、依頼人に関する項目、事件に関する項目、受任に関する項目、裁判に関する項目の順に見出しが並んでいます。見出しの色は、項目のグループ(特定・部類、依頼人、事件、受任および裁判)ごとに変化させています。これは、例えば相談のみの場合にどこまでデータを入力しなければならないのかをわかりやすくするためです。

「事件」シート

「現況区分」などは、リストから選択して入力できるようにしています。選択項目は、「オプション」シートの「リストアイテム」で変更できます。

「訴訟委任状」および「期日請書」の構成

「訴訟委任状」および「期日請書」のシートを開くと、それぞれの書類が自動的に作成されます。

「訴訟委任状」シート
「期日請書」シート

各シートのA1(事件行)セルには、「事件」テーブルの選択されている行の番号が自動入力されます。
各セルには、番号を使ってデータを表示するように関数が入力されています。A2(立場)セルには、依頼人の立場が表示されるように関数が入力されています。A1とA2セルは、表示・印刷されないように、フォントの色を白色に設定しています。

各シートが表示されている状態でブックを保存しようとすると、各シートを別ファイルで保存できるようになっています。保存先は、「事件」テーブルの選択されている事件の「データフォルダ」となっています。このようにすることで、作成した書類を確実に保存し、必要に応じて手入力で修正を加えることができるようにしています。

「オプション」シートの構成

「オプション」シートでは、事件テーブルのリストに表示される項目の設定や事件テーブルの並び替えの実行を行うことができます。

「オプション」シート

「並び替え」を実行すると、事件テーブルの並び替えに加えて、書式とリストの設定が自動的に行われるようになっています。

「マニュアル」シートの構成

「マニュアル」シートには、このブックの使用法と変更履歴を記載しています。

「マニュアル」シート

マクロの構成

VBEへの入力位置

「開発」-「Visual Basic」をクリックして、VBEを起動してください。

ビジュアル・ベーシック・エディター

各シートを操作するコードは、シートモジュールに記載しています。標準モジュールには、各シートに共通するコードだけを記載しています。

プロジェクトの構成

「事件データベース」のプロジェクトは、次のように構成されています。

プロジェクトの構成

このプロジェクトのマクロは、すべてイベントプロシージャにより実行されます。

「ThisWorkbook」モジュールの機能

「Workbook_BeforeSave」は、ワークブックが保存される際に「Sheet21(訴訟委任状)」または「Sheet22(期日請書)」がアクティブの場合、「Module1」の「SheetSave(objSheet)」プロシージャを起動し、該当するシートを別ファイルに保存します。その際、アクティブになっているシート名を引数で渡しています。

「Workbook_BeforeClose」は、ワークブックが閉じられる際に並び替えが要求されている場合、「Sheet91(オプション)」の「SortAndFormat」プロシージャを起動します。 「SortAndFormat」 プロシージャ は、「Sheet11(事件)」の「SortTable」、「FormatTable」、「CheckTable」の各プロシージャを起動し、「事件」テーブルの並び替え、書式設定およびデータチェックを行います。

「Sheet11(事件)」モジュールの機能

「Worksheet_BeforeDoubleClick」プロシージャ は、「事件番号」フィールドがダブルクリックされた場合に、事件番号の自動入力を行います。新規の依頼人なのか、既存の依頼人に事件を追加するのかに応じて、別な処理を行うようにしています。

「Worksheet_Change」プロシージャ は、ワークシートが変更された場合に次の処理を行います。

  • 事件番号などが変更された場合に並び替えを要求する。
  • 現況区分が変更された場合に書式を変更する。
  • データフォルダが変更された場合にハイパーリンクを設定する。

「SortTable」プロシージャ はテーブルの並び替え、「FormatTable」プロシージャ はテーブルの書式設定、「CheckTable」 プロシージャ はテーブルのデータチェックを行います。

「Sheet21(訴訟委任状)」および「Sheet22(期日請書)」モジュールの機能

「Workseet_Activate」プロシージャ は、ワークシートの「事件行」セルに事件テーブルの選択されている行の番号を入力します。

ワークシートには、「事件行」の値に応じてデータを表示するための関数が入力されています。

「Sheet91(オプション)」モジュールの機能

「Workseet_BeforeDoubleClick」プロシージャは、「並び替え」の「実行」がダブルクリックされた場合に「SortAndFormat」プロシージャを実行します。

「SortAndFormat」プロシージャは、「Sheet11(事件)」の「SortTable」、「FormatTable」、「CheckTable」の各プロシージャを起動し、「事件」テーブルの並び替え、書式設定およびデータチェックを行います。

「Module1」モジュール(標準モジュール)の機能

「DsblEvents」および「EnblEvents」プロシージャは、各プロシージャの実行前にイベントの抑止と速度向上のための処理を行います。

「SheetSave(objSheet)」プロシージャは、「Workbook_BeforeSave」から引数を受け取って、該当するワークシートを別ファイルのブックに保存します。

「SPLITF」は、セル内の改行コードで区切られたデータを個別に取り出すためのユーザー関数です。「訴訟委任状」および「期日請書」のワークシート内でデータを表示させるのに使用しています。

SPLITF(改行コード(CHAR(10))を含む文字列,取り出す文字列の行番号)

例えば、A1セルに「太郎CHAR(10)次郎」の文字列が入力されている場合、次の文字列を表示します。

  • SPLITF(A1,1) → 太郎
  • SPLITF(A1,2) → 次郎
  • SPLITF(A1,3) → (空白)
  • SPLITF(A1,0) → 次郎(最終行の文字列を表示します。)

「訴訟委任状」および「期日請書」は、最新のデータで作成するので、行番号を0で使用しています。

VBAのコード記述手法

変数の命名には、ハンガリアン法を用いています。

また、ワークシート関数をできるだけ使用するようにしています。

テーブル機能が使われているので、ワークシートのセルは構造化参照で特定しています。
構造化参照の細部については、こちらのサイトを参考にしてください。

また、テーブル以外のセルには名前を付けて特定しています。

VBAのコードに関する細部の説明は、サンプルファイルのコードに記載しています。

説明は以上です。細かいところは、サンプルファイルを参照してください。

せっかくデータベースを作ったのだから、「訴訟委任状」や「期日請書」以外にも、自動作成できる書類を増やしたいですね。

そういった機能の追加などを自分でできるのがエクセルの利点です。単に書類を作成するだけではなく、別のサンプルとして紹介している「ファイル保管」の「データフォルダ」の情報源に使うことも可能です。ぜひ、挑戦してください。

コメント

タイトルとURLをコピーしました