エクセルツールを利用して製品のロケーション管理をする応用例のご紹介です。
マイクロソフトビジオを利用したフロアマップ画像の作成方法から、リストから製品を選んでフロアマップ上に製品位置を表示するVBA関数などを紹介します。
作成者別アーカイブ: manica
勤怠管理をする
エクセルツールを利用すれば勤怠管理も簡単に実現できます。ICカードを使ったタイムカードシステムです。出社時にピッ、退社時にピッっとやって勤怠表が自動作成されるようにしてみましょう。
まずはあらかじめ「セルへ入力する」の機能を使って、社員のカードIDを取得して名簿を作成しておきます。右側に日付と、出社時と退社時の時刻が入力できる欄を用意しておきます。
マクロを書きます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
' 日付の行番号 Public Const ROW_NUMBER_DATE = 2 ' 日付の開始列番号 Public Const COLUMN_NUMBER_DATE_START = 3 Sub TimeCard(TagID As String, TimeStamp As String) Dim column As Integer column = COLUMN_NUMBER_DATE_START While (Cells(ROW_NUMBER_DATE, column).Value <> "") And (Cells(ROW_NUMBER_DATE, column).Value <> Date) column = column + 2 Wend Cells(ROW_NUMBER_DATE, column).Value = Date Cells(ROW_NUMBER_DATE + 1, column).Value = "出社時刻" Cells(ROW_NUMBER_DATE + 1, column + 1).Value = "退社時刻" If Cells(ActiveCell.Row, column).Value <> "" Then Cells(ActiveCell.Row, column + 1).Value = Time Else Cells(ActiveCell.Row, column).Value = Time End If End Sub |
日付の行番号は、2行目に日付の行があるよ という意味です。
日付の開始列番号は、3列目(C列)からが日付の列だよ という意味です。
プログラムの動きとしては、まずタッチされた日の列があるか探します。
無かったら、日付の列を作成して、その下に「出社時刻」と「退社時刻」というタイトルを作成します。
そして該当する社員の出社時刻をみて、空だったら出社ということで時刻を入力し、値が入っていたら2回目以降のタッチということになるので、退社の方に時刻を入力します。
では、設定画面でマクロを設定します。「右側に読取時刻を入力する」のチェックを外しておいて、「セル発見時にマクロを実行する」に先ほど作成したマクロを指定します。
B太郎のタグを読ませると...
読みとった日の日付の列が新しく追加され、B太郎の出社時刻のところに時刻が入力されました。
さらにもう1回読ませると...
今度は退社時刻のところに時刻が入力されました。
これで出社時にピッ、退社時にピッで勤怠表の完成です。
出席管理や棚卸をする
エクセルツールの利用シーンで多いのが出席の管理ではないでしょうか。出席者の持っているICカードをピッピッとやってもらえば完了!というわけです。一番簡単な出席管理マクロを紹介します。ハンディリーダを使えば、棚卸にも応用できます。
まずはあらかじめ「セルへ入力する」の機能を使って、出席者のIDを取得して名簿を作成しておきます。右側に日付と、出席したら○を付ける欄を用意します。
マクロを書きます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
' 日付の行番号 Public Const ROW_NUMBER_DATE = 2 ' 日付の開始列番号 Public Const COLUMN_NUMBER_DATE_START = 3 Sub Attend(TagID As String, TimeStamp As String) Dim column As Integer column = COLUMN_NUMBER_DATE_START While (Cells(ROW_NUMBER_DATE, column).Value <> "") And (Cells(ROW_NUMBER_DATE, column).Value <> Date) column = column + 1 Wend Cells(ROW_NUMBER_DATE, column).Value = Date Cells(ActiveCell.Row, column).Value = "○" End Sub |
日付の行番号は、2行目に日付の行があるよ という意味です。
日付の開始列番号は、3列目(C列)からが日付の列だよ という意味です。
で、設定画面でマクロを設定します。「右側に読取時刻を入力する」のチェックを外しておいて、「セル発見時にマクロを実行する」に先ほど作成したマクロを指定します。
で、B太郎のタグを読ませてみると...
読みとった日の日付の列が新しく追加され、B太郎のところに○が付きました!
これで何も考えずに起動してタグを読ませるだけで出席管理表が自動作成されていきます。便利ですね。ハンディを使えば、棚卸チェック表としても利用できますよ。
「セルを探す」で読んだ回数をカウントアップする。
次のコードを標準モジュールに記述し、エクセルツール設定画面の「セルを探す」の「セル発見時にマクロを実行する」で「CountUp」を選択すれば入力されたセルの右側のセルに入っている値を利用してタグを呼んだ回数をカウントアップします。
1 2 3 |
Sub CountUp(TagID As String, TimeStamp As String) Cells(ActiveCell.row, ActiveCell.column + 1).Value = Cells(ActiveCell.row, ActiveCell.column + 1).Value + 1 End Sub |
「セルを探す」でIDに対応したファイルやURLを開く
「セルを探す」機能を使うと、タグを読み込んだときにシートの中に同じIDがあるか探してくれます。これにマクロを連携させ、IDの右のセルに入っている値を利用してファイルを開いたりURLを開いたりできます。
次のコードを標準モジュールに記述し、エクセルツール設定画面の「セルを探す」の「セル発見時にマクロを実行する」で「WebTo」を選択すれば入力されたセルの右側のセルに入っている値を利用してファイルを開いたりURLを開いたりできます。
1 2 3 |
Sub WebTo(TagID As String, TimeStamp As String) CreateObject("wscript.shell").Run ActiveCell.Offset(0, 1).Value End Sub |
「セルへ入力する」でタイムスタンプを表示する
「セルを探す」のモードでは、設定で「右側に読取時刻を入力する」という設定があり、タグが読まれた時刻を自動で入力してくれます。この機能は「セルへ入力する」にはありませんが、マクロを使用することで簡単に実装できます。
次のコードを標準モジュールに記述し、エクセルツール設定画面の「セルへ入力する」の「セル入力時にマクロを実行する」で「InsertTime」を選択すれば入力されたセルの右側にタイムスタンプが入力されるようになります。
1 2 3 |
Sub InsertTime(TagID as String, TimeStamp as String) Cells(ActiveCell.Row, ActiveCell.Column + 1).Value = TimeStamp End Sub |