VAブリッジ:エクセルファイルを使った簡易的な共同編集を実現(エクセルVBA)

サンプル

事務所内での情報共有、どうされていますか?

共有サーバーにあるエクセルファイルをみんなで閲覧したり、編集したりしているんですが、『読み取り専用』になっていて編集できなかったり、誰かが開いたままで保存できなかったりします。タイミングによっては、番号のついた別のファイルができてしまう場合もあって、困っています。

「共同編集」という機能もありますが、OneDriveを使用していない環境では使えないのが欠点ですよね。

かといって、本格的なデータベースソフトを導入するのはハードルが高いですし……。もっと手軽に、みんなで一つのデータを管理できないでしょうか?

分かりました。エクセルファイルを「入力用」と「データ保管用」に分けることで、少人数での共同編集をスムーズに行えるアドインを作ってみましょう。

サンプルのダウンロード

使い方

準備

  1. マスタファイルの用意 共有サーバー等のアクセス可能な場所に、データ保管用となるエクセルファイル(マスタファイル)を置いてください。これが「データベース」の役割を果たします。
  2. アドインのインストール ダウンロードしたアドインファイルをインストールしてください。

マクロが含まれたExcelアドインファイルをインターネットからダウンロードして利用する場合、セキュリティ上の理由からそのままでは動作しないことがあります。以下の手順でインストールを行ってください。

手順1:ファイルの「ブロック解除」を行う
  1. ダウンロードした.xlamファイルを右クリックし、「プロパティ」を選択します。
  2. 「全般」タブの下部にあるセキュリティの項目で、「許可する」(または「ブロックの解除」)にチェックを入れます。
  3. 「OK」をクリックします。
手順2:Officeソフト側でマクロを許可する

「ファイル」>「オプション」>「トラストセンター」>「マクロの設定」より、マクロが実行可能な状態か確認しておいてください。

手順3:アドインファイルを所定のフォルダに配置する
  1. エクスプローラーを開き、アドレスバーに以下のパスをコピー&ペーストしてEnterキーを押します。 %AppData%\Microsoft\Addins
  2. 開いた「Addins」フォルダの中に、手順1でブロック解除したアドインファイル(.xlam)を保存(移動)してください。
手順4:アドインを有効化する

A. 「開発」タブが表示されている場合

  1. Excelを開き、「開発」タブをクリックします。
  2. 「Excelアドイン」ボタンをクリックします。

B. 「開発」タブがない場合

  1. 「ファイル」>「オプション」をクリックします。
  2. 左側のメニューから「アドイン」を選択します。
  3. 画面下部の「管理:Excelアドイン」の横にある「設定」ボタンをクリックします。

表示されたアドインの一覧から、今回追加したアドインの名前にチェックを入れ、「OK」をクリックします。

設定(マスタとの紐付け)

まず、手元の作業用ファイル(ユーザーファイル)と、サーバー上のマスタファイルを紐付けます。

  1. リボンに追加された「VA」タブから「VAブリッジ」の「マスタ設定」ボタンをクリックします。
  2. マスタファイルパス:参照ボタンから、サーバー上のマスタファイルを選択します。
  3. 対象シート:同期したい手元のシートを選択します。
  4. マスタシート:マスタファイルのどのシートと同期するかを選択します。
  5. 「保存」をクリックすると設定完了です。

データの読み込み

リボンの「データ読み込み」ボタンをクリックすると、マスタファイルから最新のデータを取得し、手元のシートを更新します。ファイルを開いたときにも、自動的に最新データを読み込みます。

読み込みが完了すると、モード選択画面が表示されます。

  • 閲覧モード:
    • データを閲覧するためのモードです。
    • 編集はできません(シート保護がかかります)。
    • 並べ替えやオートフィルターの操作は可能です。
    • 他のユーザーが編集中であっても、閲覧モードであれば待たされることなくデータを開けます。
  • 編集モード:
    • データを変更・追加するためのモードです。
    • 選択すると、マスタファイルの「ロック(編集権)」を取得します。
    • シートのスタイルが変わり(初期設定ではオレンジ色)、編集可能になります。
    • 他のユーザーが既に編集中(ロック中)の場合は、編集モードを選択できません。

データの書き込み

編集が終わったら、リボンの「データ書き込み」ボタンをクリックします。手元のシートの内容でマスタファイルを更新します。

  • ファイルを閉じる際には、変更を反映するかを確認するメッセージが表示されます。
  • 書き込みが完了すると、自動的に「閲覧モード」に戻ります。

排他制御

複数人で同時に編集しようとした場合、データが壊れないように「排他制御(ロック)」機能が働きます。

  • 読み込み時のチェック 誰かが書き込み処理中の場合でも、データの読み込み自体は可能です(待たされることはありません)。ただし、「現在、ユーザー [名前] が編集中です。書き込みはできません(閲覧モード)。」というメッセージが表示され、強制的に閲覧モードとなります。
  • 編集開始時(モード選択時)のチェック 「編集モード」ボタンを押した際、誰か他の人が既に編集モードに入っている場合は、「既に他のユーザー ([名前]) が編集を開始しています。」という警告メッセージが表示され、編集モードには移行できません。
  • 書き込み時(保存時)のチェック 自分がデータを読み込んだ後に、誰か別の人がデータを更新している(マスタファイルが新しくなっている)場合、書き込みを行おうとすると「他者によりデータが更新されています」と警告を表示して書き込みを中断します。
  • 警告が表示された場合は、以下の手順でリカバリしてください:
    • 自分が編集した行をコピーし、別のエクセルブック等に退避させる。
    • 再度「データ読み込み」を実行して最新データを取得する。
    • 「編集モード」にする。
    • 退避させておいたデータを貼り付け、「データ書き込み」を実行する。

制限事項

  • 動作環境: 動作確認はWindows版 Microsoft 365で行っています。Mac版エクセルについては、動作を確認していません。
  • データ構造: シート上の「テーブル(ListObject)」機能を使用している必要があります。1つのシートに2つ以上のテーブルがある場合には対応していません。マスタファイルとユーザーファイルで、列の並び順や項目名が一致している必要があります。
  • 更新方式: データの書き込みは「全洗い替え」方式です。マスタ側のデータを一度削除し、手元のデータですべて置き換えます。
  • 書式の初期化: データの読み込みを行うと、セルの書式(色やフォントなど)は初期化(クリア)されます。これは、マスタファイルのデータと整合性を保ち、古い書式が残ることによる誤解を防ぐための仕様です。

管理者向けの情報

VBAコード

このアドインは、VBAコードが閲覧・編集可能な状態で公開されています。basSettingsモジュールの定数を修正することで、ロックファイルの有効時間などを変更できます。

ユーザファイル

ユーザーファイルは、1つのシートに1つのテーブルが配置されている必要があります。

マスタファイルとロックファイル

マスタファイルのテーブルの構成はユーザファイルと同一でなければなりません。

マスタファイルと同じフォルダに、自動的に .lock という拡張子のファイルが作成されます。これは誰が編集中かを管理するためのファイルですので、削除しないようにしてください(誰も使用していない時は自動的に無効になります)。

カスタムプロパティの使用

設定画面で指定したマスタファイルのパスなどは、ユーザーファイルの「カスタムドキュメントプロパティ」に保存されます。

ユーザー定義処理

VABridge_AfterLoad(読み込み後)およびVABridge_BeforeSave(書き込み前)という名前のプロシージャをユーザーファイルの標準モジュールに作成することで、独自の処理を自動実行させることができます。

コメント

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