« 【EXCEL図書管理】 Ver2.180公開されました。 | トップページ | 【ExcelVBA】 InputboxでIMEをonにする。 »

2017年1月18日 (水)

EXCELで契約書管理 その4

 前回作成したVBA契約書管理ブックを少し修正してみました。
契約書一覧ファイルの配布をどうするか。
契約書一覧から、特定の言葉を検索するのを簡単にできないか。

この2点についてです。

 ブックごとに共有設定してみてもらうというのもありますが、
その際に、契約書シート自体を参照してもらうという場合、
データが変わる可能性があり、あまり好ましくないように
思われます。

 また、検索語句で該当する契約書番号を調べる場合、
フィルターで、該当する列ごとに検索語を指定すれば良いとは
いえ、少し面倒です。

ちなみに、過去の記事は、下記の通り。 

EXCELで契約書管理 その3   ブックDL可能
http://engi.cocolog-nifty.com/sirenai/2016/04/excel-251e.html

EXCELで契約書管理 その2
http://engi.cocolog-nifty.com/sirenai/2016/04/excel-3629.html

EXCELで契約書管理 その1
http://engi.cocolog-nifty.com/sirenai/2016/04/excel-e9d5.html

'-----

'-----

(1)参照用シート及び配布用ブックの作成。

 契約書シートは、契約書入力シートから行列入れ替えてコピーされて追加・更新されるので、入力規則もそのままコピーされます。調べるときに、マウスでクリックすることはよくあるのではと思いますが、その際に入力規則を変更する可能性があります。

 また、契約書シートは、ダブルクリックすると契約書入力シートに該当行が行列入れ替えされてコピーされ、契約書入力シートがアクティブになる仕様です。単に、参照するのに、この仕様はめざわりに感じます。

 参照用の契約書シートは、入力・更新処理とは別に作成した方が好ましいと思いますので、別途作成する機能を追加することとしました。

 ついでに、このシートをブックとして保存する処理も行い、このブックを配布するようにしてはどうかと思います。 場合により、PDF化しても良いです。PDFでの配布。
 また、契約書全データではなくて、配布先にかんけいするものだけに限定して、配布するというのも、良いかもしれません。

 フローは、既にある契約書データベースである契約書シートのセルを「参照用契約書」というシートに貼付けするだけです。 これだと、入力規則も貼りつくので、入力規則は削除するようにします。

 ネットで、入力規則を削除 を調べると、
 Selection.Validation.Deleteとか、Cells.Validation.Delete とかでできることが分かります。

 セル範囲.Validation.Delete ということですので、今回は貼付けで必ず値があるだろうA4~P列+A列最終行のセル範囲の入力規則を削除することとします。
  dim endgyou as long
  endgyou=range("a" & rows.count).end(xlup).row
 range("a4:p" & endgyou).Validation.Delete

シートを新規ブックにするには、キーマクロをそのまま活用しても良いですし、調べてみてもそれなりのコードが分かるかと思います。ただ、今回はシートをブックにした場合、シートにあるマクロ登録されている図形ボタンは削除する必要がありますので、シートを新規ブックにするコード+図形削除のコードを調べるのが面倒ですので、キー記録のコードを流用することとします。

 例: 参照用契約書のselectは不要なので、コメントアウトします。
  ' Sheets("参照用契約書").Select
   Sheets("参照用契約書").Copy
   ActiveSheet.Shapes.Range(Array("Rectangle 1")).Select
   Selection.Cut
'----

'-----


(2)契約書データから、ある語句を検索する機能について考える。

 契約書データの項目に、取引先、取引の目的、取引概要、摘要の項目があるので、この4つの列に、検索語句がある場合、その行を表示するようにします。
別にこの4項目でないといけないというわけではありません。契約書名などを入れてもよいかもしれません。
 複数項目で、検索語がある行を表示させるには、フィルターの詳細設定で、条件としてOR抽出となるように条件範囲を作成します。
 同じ行の項目に条件を入れると、and検索になります。or検索の場合は、行を変える必要があるので、今回は4条件なので、4行の条件範囲になります。(項目名行を入れると、5行です。)

 条件範囲

Keiyaku_jouken

 上図では、検索語「A」をor検索した場合の条件範囲への入力例です。
 結果が、別セルに出力されるように指定しています。

 検索結果を参照するのに、結果リストの左上隅がエクセル内で先頭になるようにした方が見やすいでしょうから、そのようにします。
 検索結果は、AA10に貼り付けられるので、gotoメソッドを使います。
 Application.Goto Range("aa10")
  Application.Goto Range("aa10"),true と、すべきらしいですが省略しても大丈夫なようです。

 ついでに、AA9に、シートのA1に飛ぶボタンかリンクを設けておくと、少し便利かもしれません。

 処理前には、このフィルターの条件範囲や出力範囲はクリアしてから処理を行うようにします。

 では、この語句検索をどのタイミングで行った方が便利かを考えてきます。
menuシートに、独立してボタンを設定しても良いかもしれません。

menuシート

Keiyaku_menu_2

 「契約書の参照・検索」ボタンクリックで、msgboxを表示させて、参照用契約書を直接見るのか、語句検索に進むのかの選択ができるようにしてみます。
 検索語句は、inputboxを利用して、語句入力します。


'----

'----- (3)ついでに、保存処理を追加してみる。 

 別名保存をするボタンを追加したいと思います。改めてみてみると、保存処理、よく分からない名前ですね。別名保存、もしくはバックアップを行いたいので、あとでボタン名を直してください。
 バックアップは、savecopyasを使うようです。
 ThisWorkbook.SaveCopyAs Path & MyFname & "_BackUp" & ".xlsm"
ThisWorkbook.SaveCopyAs Path & MyFname & "_" & Youbi & ".xlsm"

 上書き保存+backupと名前が付いた別名保存、そして曜日が付いたブック保存としてみました。1週間前までは別ブックとして保存されることになります。
 当ブックが壊れた場合、backupが付いたブックか、前日の曜日が付いたブックで復元します。
 といっても、保存ボタンをクリックしないと意味がないので、「ブックを閉じる」ボタンのマクロにも、この保存処理をcallする文を追加しておきます。

 当ブックの×ボタンで閉じられた場合は、これらのボタンはクリックされないことになりますが、その対策をするかどうかは、どのような人が運用するかで判断しても良いかもしれません。

契約書管理Ver1.02.zip ↓ (日本語はアップロード時に無視されるようです。)

「ver1.02.zip」をダウンロード






 

|

« 【EXCEL図書管理】 Ver2.180公開されました。 | トップページ | 【ExcelVBA】 InputboxでIMEをonにする。 »

「ExcelVBA」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/83128/64779409

この記事へのトラックバック一覧です: EXCELで契約書管理 その4:

« 【EXCEL図書管理】 Ver2.180公開されました。 | トップページ | 【ExcelVBA】 InputboxでIMEをonにする。 »