« EXCELで契約書管理 その2 | トップページ | 夢想的BABYMETAL初考 その46 »

2016年4月17日 (日)

EXCELで契約書管理 その3

EXCELで契約書管理を考えてみた、の、その3。

その2はこちら。

(2)検索・抽出機能は?
 検索とは、検索語を入力して、該当するデータを表示できれば良いし、
検索結果のデータがコピーでき、他のシートなどに貼り付けできれば良いと思う。であれば、最初から契約書データにオートフィルターを設定しておけばよいだろう。

 契約書データを検索する場合、取引先名かもしくは契約書名で検索するのがほとんどだと思われる。

  いずれ、取引先名か契約書名のみで、まず検索できるようなイメージが良いかもしれない、検索条件入力フォームが表示され、取引先名か契約書名を入力し、該当データがあれば、リスト形式(入力登録されている形式だが)で表示され、その行をダブルクリックすると、単独の契約書のデータを縦表示~詳細表示するというイメージでしょうか。

 今回は、エクセルのフィルター機能を使うということにします。

 抽出については、フィルターで折りたたまれたデータを含んだセル範囲をコピーした場合に、今のエクセルは表示されているデータのみコピーされるので、特に注意することは無いようです。

(3)入力のしやすさ
 癖なのか、慣れなのかわかりませんが、右横方向に値をセル入力するのがどうも、違和感を感じてしまいます。なので、値の入力は縦方向に入力できるようにします。といって、VBAではないフォーム機能はどうもボタンに違和感を感じてしまいます。若干、変更したい部分があるけど出来ないというまどろっこしさがあるというか。 また、VBAのフォームを使うのもありますが、手続きが複雑になるので止めにし、今回は簡単にできそうな入力専用のシートを設定します。
 シート保護やセルロックの設定などをして、入力できるセルを限定します。 入力値をリストに反映するのは、登録ボタンクリックとします。
 入力必須項目がブランクの場合は、メッセージを表示し、登録できないようにします。必須項目がすべて入力されているなら、行列入れ替えて、契約書や取引先のリスト形式データのシートに、追加もしくは該当行を更新します。

※操作の流れを、前もって、決めておきます。※
 当ブックをオープンした場合に、どのシートが最初に表示されるのか、それを決めるのか決めないのか。
 決めることにします。

 今回は、メニューシートを設けて、オープン時はこのメニューシートが表示されるようにします。検索やら、入力などは、すべてこのメニューシート上に配置したボタンクリックで行うようにします。

 各シートには、メニューシートに戻るボタンを設置します。

 

・メニューシートに配置するボタン
  契約書の検索・更新ボタン
  取引先データの検索・更新ボタン
  契約書の新規入力ボタン
  取引先データの新規入力ボタン

 

・検索・更新の場合
  検索・更新ボタンが押されると、各契約書、取引先のシート上に「更新」 という値を入力します。この「更新」と言う値がシートにある場合だけ、  シート上でダブルクリックした場合に、その該当行の値を、入力専用シートにコピー貼り付けるようにします。と同時に、各契約書・取引先シートがアクティブでなくなる場合(他のシートがアクティブになる場合)、 「更新」という値を消去しておくようにしておきます。シート上でのダブルクリックでマクロが常に実施されるのを防ぐためです。

 

(4)入力シートで、PDFファイルへのリンク式をセルに代入する。
Dim VarFileName As Variant
VarFileName = Application.GetOpenFilename("ALL,*.*", , "ファイルを指定する") '
 getopenfilenameで、ファイル選択フォームが開き、そこでファイルを選ばなかったら、変数にFalseが代入されるので、それ以外の時にハイパーリンク式をセルに代入する

 

If VarFileName <> "False" Then
    ActiveSheet.Unprotect  ' シート保護解除する。
    ActiveSheet.Hyperlinks.Add Anchor:=Range("c19"), Address:=VarFileName
    ' VarFileNameには、フルアドレス+ファイル名が代入される。
 開く場合は、openコマンドでVarfilenameを指定するのだが、今回は開くのではなく、アドレスをセルに代入するだけなので、こうする。

    Range("c19") = VarFileName
    ActiveSheet.Protect
End If

(5)新規入力も、更新入力も、1つの入力シートを使う。
 メニューから、新規入力ボタンクリックで、入力シートをアクティブにした場合は、新規入力状態とし、契約書・取引先各シートに、入力データを追加します。
 メニューから、更新・検索ボタンをクリックし、各契約書・取引先各シートでダブルクリックして、入力シートが表示された場合は、その該当行のデータを入力シートのデータで置きかえます。
 入力シートの特定セルに、新規の場合は「新規」を入力し、更新の場合は「更新」と入力する。入力シートの登録ボタンは、この特定セルの値により、入力されたデータを追加登録するのか、指定行のデータを置き換えるのか(指定行に登録するのか)の場合分けのコードを書いておく。


 

 (6)シートタブで、ダイレクトにシートが切り替えられた場合、どうするのか?

 ①契約書や取引先データ・シートの場合、
  常に更新できる状態であっても良い。または、ダブルクリックして直接セル編集できる通常のエクセルの機能が働いても良い。その前に、リスト形式のデータの直接編集・削除を認めるかどうか、このブックを扱う人が誰であるかによって変わる話ではある。

 ②入力シートの場合
 常に新規入力状態とした場合。
 その場合、入力シートがアクティブになったタイミングで、つまりシートのコードに書くことになる=moduleなどには書かない=新規追加する行の取得をしておく必要があるだろう。

 だが、更新したい場合に、入力シートをアクティブにした場合でも、新規入力状態となってしまうので、検索・更新の場合=各データシート上でダブルクリックしたときだが=入力シートに、「更新」の値を入れて置き、この値がある場合は、新規入力ではない=書き戻る行は最終行+1の新規行ではない=とする。 
  だと、入力シートがアクティブになる前に、入力シートに値を入れる処理が行われ、アクティブになった時の処理は、このあらかじめ入力されている値で、別れるようにすることになる。

 ↓(5)くらいまでの完成度のマクロブック  
「Keiyaku_kanri_Ver1.zip」をダウンロード




 

|

« EXCELで契約書管理 その2 | トップページ | 夢想的BABYMETAL初考 その46 »

契約書」カテゴリの記事

コメント

コメントを書く



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




トラックバック

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

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

« EXCELで契約書管理 その2 | トップページ | 夢想的BABYMETAL初考 その46 »