2020年5月6日水曜日

始業と終業、UniqueとSortとXlookup 

まずはログを取るということで、必要な情報は絞らずに設定しました。
足りない情報は都度追加する方針です。

次に得たログで何を見たいかを考えていきます。
今回はテレワーク視点で一日の始業終業が見れるようにします。
日中のみで働く人、日をまたぐ人があると思いますので、
ある程度のケースに準じて対応することにします。
正確な勤怠管理はここでは検討していませんが、
単純に出勤退勤ボタンを用意することで解決できると思いますので、
今あるログの中でどこまで再現可能かやってみます。

まずはPCのシステムログを取る方法。
これはPCがプライベートだったり仕事以外の操作を行うことがあった場合、
起動とシャットダウンのログでは勤怠管理は困難ですので、
単純に以下のようにしました。
 エクセルを開いた = 仕事始めた  ⇒ログイン
 エクセルを閉じた = 仕事終わった ⇒ログアウト
なのでエクセルを開いた瞬間にまずはログを取るようにします。
Workbook_Open() と Workbook_BeforeClose(Cancel As Boolean)
これでなんとか対応が可能です。
色々なエクセルに同じVBAを仕込むことになりますので、
用途に応じて開くエクセルの数だけログインとログアウトという動作が追加されます。
よって始業と終業は以下のようにしてみました。
 始業 = 一番最初のログイン
 終業 = 一番最後のログアウト
日をまたぐ場合はこれでは成り立ちませんので別の設定を設けました。

一番最初のログイン取得方法
 対象の日付をUnique関数を使う。Sort関数で並べ替える。
 隣の列にXlookup関数を使ってスピル。
 引数で上からにするのがポイントでした。
一番最後のログイン取得方法
 上記の中で引数を下からにすれば可能でした。


■寄り道
いずれは勤怠管理もできそうだったので検討開始。
寄り道に時間がかかり過ぎましたが、ログの取得方法に一部変更がはいったり修正ができたのでこれはこれで良しとしています。

■課題
一人のログなら一か所にまとめて取れますが、複数人を管理しなければなりませんので
OneDriveに格納した状態で再現するように組む必要あり。
ローカルで環境が作れるように自動でどこまでやれるかの確認。
更新ログを残すシートが存在しない時の自動追加。
CSVでログを残すことを今回は検討しており、CSV取り込み方法の検討。
一人だけの集計ではなく複数のCSVに対応した集計。


0 件のコメント:

コメントを投稿

VBAでCSVに出力する。 ~ログの残し方~

今回はCSVデータとして一か所にそれぞれのユーザーID名で保存するようにしたいと思います。 重複することは無いでしょうし、一か所のフォルダにまとめて置けば 人が複数人いてもまとめてデータの取得ができるのではないかということで。 ■やりたいこと 「CSVに出力する」 ...