サンプル

電話メモの内容をメールで送信(エクセルVBA)

法律事務所では、かかってきた電話の内容などを弁護士に間違いなく伝えることが大事ですよね。
そこで、エクセルのマクロを使った「電話メモ」を紹介します。

エクセルで作った電話メモだったら、今でも使っていますよ。

マクロを使えば、エクセルからメールを自動送信することもできるようになりますよ。

そんなことができるんですか?
ぜひ、教えて下さい。

ダウンロード

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


ブック(ファイルに保存されたエクセルのデータ全体)を開くと自分以外のファイルからデータを読込むようにメッセージがでますが、とりあえずキャンセルしてください。

使用方法

  • 「番号」列のセルをダブルクリックすると、新しい行が追加され、番号が自動入力されます。
  • 「日時」列のセルをダブルクリックすると、現在日時が自動入力されます。
  • 「確認日時」列のセルをダブルクリックすると、現在日時が自動入力されます。
  • 「オプション」シートに各所員のメールアドレスを登録しておけば、「メール送信日時」列のセルをダブルクリックするとメールが自動送信されます。

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

なお、このサンプルは、電話メモを新たに作ったり、既に使っている電話メモを改善したりする場合の参考にしていただくためのものです。
使用にあたっては、それぞれの法律事務所に応じた電話メモに修正してお使いください。

このサンプルをそのまま使うこともできますよね。

そうなんですが、それではマクロを使う意味がありません。できあいのプログラムを使うのであれば、もっと良いソフトがいくらでもあると思います。
マクロの良いところは、自分の使いやすいプログラムを自分自身で手軽に作れることです。ぜひ、このサンプルを参考に自分の法律事務所にピッタリの電話メモを作っていただきたいと思います。

分かりました。
でも、難しそうですね。

次のページから、このプログラムの構造・機能を説明してゆきます。
プログラムのどの部分がどんな働きをしているのかが分かれば、修正するのは案外簡単だと思います。

忙しいので、手短に説明してくださいね。

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

まずは、「電話メモ」に使用されているワークシートについて、説明します。

説明して欲しいのは、マクロのことなのですが...

ワークシートをどのように作っているのかが分かっていないと、マクロがどのように働いているのかが分かりませんので、少しお付き合いください。

ブックの構成

ブックには、次の3つのシートが作られています。

  • 「メモ」シート
  • 「オプション」シート
  • 「マニュアル」シート

このうち、電話メモの本体となるのは、「メモ」シートです。

「メモ」シートの構成

「メモ」シートには、電話メモの各項目(フィールド)とそれに応じたデータ(レコード)が一覧表で入力できるようになっています。

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

テーブルの各セルには、ワークシートの通常機能を使って入力規則を設定しています。

例えば、「用件」のセルは、リストから入力データを選択できるようにします。

リストの「元の値」は、オプションシートに保存してあります。

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

「オプション」シートには、「リスト設定」および「所員別設定」の定数をテーブルで記録しています。

  • 「リスト設定」には、「電話メモ」の「用件」列のリスト入力の「元の値」が入力してあります。
  • 「所員別設定」には、各所員ごとのメールアドレスを設定しています。

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

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


以上でブックとワークシートに関する説明を終わります。

テーブルを使うということが重要なんですね。

そうなんです。VBAの参考書では、後ろの方にならないと出てこないですが、データベースとしてエクセルを使うことが多い法律事務所の業務においては、非常に重要なテクニックです。

マクロの構造

それでは、「電話メモ」のマクロの全体構造を説明しましょう。

いよいよマクロに関する説明ですね。

VBEへの入力位置

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

左上の「プロジェクト・エクスプローラー」部で各モジュールをクリックすると、そこに記載されているコードが真ん中の「コード・エディター」部に表示されます。

見ていただくとお分かりのとおり、ほとんどのコードがシートモジュールに記載されています。標準モジュールには、ごくわずかしかコードが記載されていません。

エーッ!
私の持っている教科書では、マクロは「標準モジュール」に書くのが基本だと書いてありますよ。

そうですね。
でも、実は、シートに関係するコードは、そのシートに書いた方が、プログラムを構造化できますし、コードの記述も簡単になるんです。

プロジェクトの構成

「電話メモ」プロジェクトの構成は、次の図のようになっています。

電話メモのプロジェクト構成

すべてのマクロは、イベントプロシージャで起動しています。

これも教科書とは全然違いますよ。
マクロを実行するためには、シート上にボタンを配置したり、ショートカットキーに登録したりするのが基本的なやり方だとされています。

そうですね。イベントプロシージャは、教科書の後ろの方に応用的なテクニックとして記載されていることが多いようですね。
でも、最もエクセルらしい直感的な操作ができますし、特別なボタンを作成したりする手間も省けるので、積極的に使うべきだと考えています。

「Sheet1」モジュールの機能

Sheet1」モジュールには、シートをダブルクリックした時に起動する「Worksheet_BeforeDoubleClick」プロシージャと、シートに変更が加えられた時に起動する「Worksheet_Change」プロシージャが組み込まれています。

Worksheet_BeforeDoubleClick」プロシージャは、「メール送信日時」列のセルがダブルクリックされた場合は「 SendMail」プロシージャを呼び出します。
SentMail」プロシージャは、Sheet1の内容でメールを作成して送信します。

「Module1」の機能

標準モジュールである「Module1」モジュールには、イベントの抑止およびその解除などを行う「DsblEvents」プロシージャと「EnblEvents」プロシージャが組み込まれています。

DsblEvents 」プロシージャは、マクロ実行中のイベントの発生を抑止して、イベントが連鎖するのを防止します。併せて、画面の描画などを停止して、マクロの実行速度の向上を図っています。
EnblEvents」プロシージャは、「DsblEvents」が行った設定を解除するプロシージャです。

イベントは連鎖させないように制御しています。

以上で、マクロの構造に関する説明を終わります。

プロジェクトとか、モジュールとか、プロシージャとか、何のことかよく分かりません。

サンプルファイルには、できるだけ詳細なコメントを付けていますので、そちらを見ながら、少しずつ慣れていくしかないと思います。

列の名前を変更したり、確認をした弁護士の名前の列を追加したりして、うちの事務所で使っている様式に変更してみました。マクロは、それに関係する部分をほんの少し修正しただけで、問題なく動いているようです。

それは良かったです。
ただし、今後、さらに大きな改善を加えたり、別なシステムを作る場合には、やはり基礎からちゃんと勉強しなければならないかも知れません。

そうですね。
でも、とりあえず一歩前に進めたのは良かったと思います。

コメント

  1. 管理人 より:

    ファイルの共有の方法を「各人別ファイル」から「一時データ(CSV)ファイル」に変更したため、ファイルの共有に関する記述を削除しました。
    ファイルの共有に関しては、こちらをご覧ください。

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