勤務報告は自己申告制で、エクセルシートに日別の出退勤時刻を記入した一覧を上長に、月に一度、月初に提出しています。
日々の出社・退社時刻を自動的に記録できないものか…と、考えてみました。
私の仕事柄ほぼ1日PCを使って作業をしています。
PCにログインした時刻とログアウト(シャットダウン)した時刻から、1日内で最初のログイン時刻を出社、最後のログアウト時刻を退社としたらどうだろう…。(1日に複数回ログイン・ログアウトするかも)出社と退社が24時をまたがない事が前提です。もし、その時は手で直せばいいか…。
など、色々考えてみました。
私の使用しているPCのOSはWindows10(x64)です。
windowsはログイン・ログアウトなどのイベントをOSが自動的に記録していますので、イベントビュアーなどでログイン・ログアウトの時刻を確認することができます。
イベントビューアだと、私が必要な情報(単純にログインとログアウトの時刻がほしい!)を取り出すのが面倒そうなので、これは却下!
ログイン・ログアウト時に簡単な処理を起動させPC内のファイル(データベース)にその時刻を記録する方法にします。
■ ログイン・ログアウト時に起動させる処理の作成
ログイン・ログアウトの時に起動させる処理はVBスクリプトで作成します。ログイン・ログアウトそれぞれに別の処理を作ると管理が面倒なので、処理に引数を渡してログインとログアウトを区別します。
まずは、引数を1つ受け取り起動したときの時刻をファイルに書き込む(追加)処理を作ってみます。
テスト用にCドライブに「MyData」フォルダを作成し、その下に「test」フォルダを作成します。
次に「test」フォルダを開いて、右クリック、「新規作成」をポイントし「テキストドキュメント」をクリックします。
ファイル名を入力する画面になりますので、今回のテスト用VBスクリプトのソースファイル名を入力します。
初期状態で拡張子は「txt」になっていますが、VBスクリプトの拡張子は「vbs」ですので、拡張子も含めて「test001.vbs」と入力してください。
「ファイルが使えなくなります…いいですか」と警告が表示されますが、「はい」をクリックしてください。
ここは間違えると動かないことがありますので注意してください。入力したファイル名の右側「種類」の欄に「VBScript Script ファイル」と表示されていれば間違いありません。
間違っているようであれば、ファイル名を右クリックして「名前の変更」をクリックし再度ファイル名を拡張子も含めて「test001.vbs」と入力してください。
ファイルが作成できましたら、ファイル名を右クリックして「編集」をクリックします。空の「メモ帳」が開きます。お使いのテキストエディタがあれば、そちらを使っていただいてもかまいません。
以下がテスト用のVBスクリプトのソースコードです。メモ帳に入力ましょう。(貼り付けていただいてもOKです)
' - ' - 時刻の記録をする ' - Option Explicit On Error Resume Next Dim oFSO ,oFIL ,lFileName Dim arg1 ,StartTime StartTime = now lFileName = "C:\MyData\test\LOGMSG.txt" ' -- 引数があるか?無ければ「none」 If (WScript.Arguments.Count < 1) Then arg1 = "none" Else arg1 = WScript.Arguments(0) End If ' --- ファイル出力(追加) Set oFSO = WScript.CreateObject("Scripting.FileSystemObject") Set oFIL = oFSO.OpenTextFile(lFileName, 8, True) oFIL.WriteLine("DataWrite" & vbTab & "ARG1=" & arg1 & vbTab & StartTime) oFIL.Close Set oFIL = Nothing Set oFSO = Nothing
引数が指定されていないときは、引数に「none」を強制的にセットしています。
では、実行してみましょう。
「スタートボタン」をクリック、「Windowsシステムツール」から「コマンドプロンプト」をクリック、以下の様に入力して「Enter」キーを押します。
C:\MyData\test\test001.vbs SYUSSYA
最後の「SYUSSYA」は第一引数です
間違いが無ければ、ソースを作ったフォルダに「LOGMSG.txt」という名前のファイルが新しくできているはずです。
このファイルをダブルクリックして開いてみましょう。以下のような内容のはずです。
DataWrite ARG1=SYUSSYA 2017/02/01 13:45:40
引数を変えて実行してみましょう。コマンドプロンプトを使って…その前に LOGMSG.txt ファイルを閉じてください!!
C:\MyData\test\test001.vbs TAISYA
LOGMSG.txt を開くと
DataWrite ARG1=SYUSSYA 2017/02/01 13:45:40 DataWrite ARG1=TAISYA 2017/02/01 13:50:38
引数を TAISYA にしたので、2行目にそのデータが追加されています。
どうしてもうまくいかない!といった場合。
VBスクリプトのソースコードが間違っている可能性があります。その時は6行目を以下のように修正してください。
On Error Resume Next ↑ この行を ↓このように修正(先頭にシングルクォーテーション「'」を追加) 'On Error Resume Next
エラーがある行でVBスクリプトの実行が停止しますので具体的にどの行のどの命令でエラーがあるのかがわかります。
エラーがある行を修正してください。(修正したら保存することを忘れずに!)
今回は、ここまでです。
次回は、このVBスクリプトをログインとログアウトの時に起動する方法を紹介します。